问题标签 [asp.net-authorization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 如何在 ASP.NET Web API 应用程序中覆盖 /Token api 调用行为
我有一个 ASP.NET Web API 应用程序,我正在尝试使我的 API 调用安全且仅对注册用户可用。
我知道注册用户可以通过调用 /Token 并发送用户名和密码以及 grant_type 以及请求来获取访问令牌。
我了解这一切都是因为Startup.Auth.cs
文件App_start
夹中的文件内有以下配置:
通常使用用户名和密码调用 /Token 会搜索默认用户表,如果该用户存在,则它将访问令牌发送给用户。
但是在我的项目中,我有自己的方法/表来注册用户并将它们存储在数据库中。所以我没有使用 ASP.NET Identity 提供的默认用户表。
问题:
我是否有可能以某种方式覆盖/更改对 /Token 的请求的处理方式?所以在那里我可以通过我自己的自定义用户表检查用户名/密码,然后在一切正常的情况下发送访问令牌。
编辑:
我想了一个办法,但我真的怀疑这应该是要走的路。在我自己注册用户的自定义方法中,当一切正常时,我可以调用
现在我的用户也在 ASP.NET 用户表中,随后对 /Token 的调用应该将他们识别为注册用户。但我想现在我已经在两个表中复制了我的用户。有什么干净的方法可以实现我想要的吗?
asp.net-mvc - MVC 5 Windows 身份验证逻辑
我正在尝试了解如何使用 Active Directory 身份验证创建 MVC5 网站。我也想管理用户。所以为此我在 VS2013 中创建了一个简单的项目并选择了“Windows 身份验证”。当我运行应用程序时,我会弹出身份验证窗口以输入 AD 用户名和密码。之后,它确实在右上角显示“Hello AD/UserName!”。
但我没有看到它实际要求身份验证的逻辑。另外我想将几个 AD 用户保存到数据库中,只允许他们登录网站。我怎样才能做到这一点?另外,我的其他网页将如何知道用户是否已通过身份验证。谢谢你。
c# - 我可以安全删除默认授权模板的哪些部分?
我想在我的网站上进行最简单的授权,包括用户角色。默认模板对我来说太复杂了。我不需要外部登录和其他东西。我的项目应该包含哪些核心部分?
asp.net-identity - 保护整个 ASP.NET 5 MVC 6 应用程序
如果我想保护我的 MVC 应用程序中的特定部分,我使用[Authorize]
ActionMethod。我也知道我可以将它用于整个控制器,这样我就不必为其中的每个 ActionMethod 指定它。
我想在全球范围内要求授权,并且希望能够只在少数几个地方允许匿名用户。如何要求用户全局授权并允许匿名用户在几个 ActionMethods 中使用?
asp.net-mvc - WebApi 中的授权
我正在使用 AdminColntroller 构建管理页面(MVC 5):
我想将其实现为单页应用程序,因此我将对管理 Web api 进行客户端 ajax 调用,我还想保护对以下内容的访问:
这是我在管理视图中进行的 ajax 调用:
这会引发错误(fail() 方法):“此请求的授权已被拒绝。” 我不明白为什么 - 我的用户有一个角色 Admin(这就是我什至能够进入管理页面的原因),如果我[Authorize]
从GetEcho()
方法中删除然后在其中设置断点,我会看到正确的 User 对象。任何想法我做错了什么?
c# - 在消息处理程序或过滤器中设置 IPrincipal 未正确进入控制器
我有一个 Web API 2 项目,我们正在使用基本授权。客户端在授权标头中发送用户名:密码 - 我们将其提取并连接到 LDAP 服务器以
- 验证用户
- 验证他们的密码,然后
- 从他们的 LDAP 响应中获取一个属性值并将其传递给请求的 IPrincipal。
问题是,当我通过System.Web.Http.ApiController.User.Identity.Name访问控制器中的IPrincipal时,我看到传入的值并不总是正确的!
示例:在消息处理程序或过滤器中,我将 IPrincipal 设置为:
编辑:这是我们在过滤器中设置主体的方式:
在请求的生命周期后期,在控制器中,我尝试像这样访问这个值:
所以这里发生的是我从ApiController.User.Identity.Name获取User.Identity.Name,在负载测试下,我同时发送 2 个线程并行请求 - 当我这样做时,请求对象显示正确URL 中的 ID,但是,过滤器中设置的 IPrincipal 不正确。这是一个具有预期结果的固定测试,所以这永远不会发生。如果它错开电话,问题就不会出现!如果同时发送呼叫,则问题的发生率为 100%。
这是我调用服务的方式:
...
如何访问请求的正确 IPrincipal.User.Identity.Name?
asp.net-identity - 如果索赔不存在,我该如何重定向
背景故事
在我的应用程序中,一个身份用户与许多组织相关联,每个关联的行为类似于一个单独的“帐户”,但使用相同的登录名。在初始登录时,用户选择他们想要继续使用的帐户,这样做后,我创建一个声明(将任何现有声明擦除到该类型)并设置他们选择的帐户的 ID。
问题
目前我使用策略来检查我的控制器上是否填写了适当的 ID 声明,有什么方法可以使用我的策略将用户重定向到“帐户选择”页面?如果不是,那会被认为是 Asp.net 的方式。我应该检查每个控制器映射的方法吗?
使事情进一步复杂化
我的很多方法都是 Ajax 的返回类型 JSONResult,所以我可以预见自己必须在我的 JSON 中返回一个“直接到”字段,并在 JavaScript 中适当地处理它,如果它存在于响应中,是否有这样做的更好方法?
非常感谢
c# - c# HttpWebRequest.GetRequestStream 授权
我有一个带有 Authorize 标签的 Web Api 控制器。 https://msdn.microsoft.com/de-de/library/system.web.http.authorizeattribute(v=vs.118).aspx
我正在使用 HttpWebRequest 对该控制器执行 Post-Request,如下所示:(请注意,我没有提供授权标头来显示我的问题)
问题: 在请求请求流时,我希望得到一个未经授权的异常。但我可以调用 GetRequestStream 甚至写入该流,没有任何问题。只有在调用 GetRespone 时,我才会收到我之前预期的 401(未授权)。
我只是想知道,这是否是预期的行为?如果有任何方法可以改变它。例如,如果我要上传一个大文件,在通知客户端无权这样做之前,所有数据都会被上传。不知何故,这对我来说没有意义?还是我错过了什么?
c# - 如何实现仅返回用户数据的 WebApi 授权
我正在构建一个 WebApi 项目,我们必须超越简单的角色授权。基本上,登录的用户应该只查看他/她创建的数据。数据可以是图像、帖子、文档等。我查看了 WIF 的声明,但我似乎不明白如何使用它们来实现这种授权。我见过的所有实现几乎都专注于操作授权,而不涉及数据访问部分。我觉得这是所有 API 的常见问题。我该怎么做呢?