- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 asp.net core 设计一个系统,我想实现基于声明的授权,但有一个特定的部分让我感到困惑。
当提出声明时,声明将包括类型和值以及可选的发行者。在处理程序中,可以在确认访问之前检查此声明和颁发者。
但是这个颁发者没有存储在身份数据库中,那么处理程序如何检查颁发者?
我是不是误解了这一切是如何运作的?我的理解是,用户提出某种类型的声明,他们的声明具有一定的值(value),而发行者是声明类型的验证者,实际上对该用户具有该值(value)。
处理程序将检查该值并可能检查发行者,但当数据库不存储它时它不能。那时我不明白发行人的意思。
我希望用户有一组声明,包括谁/什么验证了这些声明,并且应用程序能够随时验证这些声明。
请帮助我理解。
我已经这样测试过了:
我在这里唯一能想到的是,一旦将声明添加到数据库中,它就被视为已通过 Microsoft 验证,现在由代表 Microsoft 的应用程序(本地机构)持有。
如果是这样的话:
我希望能够有选择地前往该发行人并在我需要时检查声明,这意味着发行人可以撤销/使声明无效。该员工声称他们在 Microsoft 有一个员工编号,Microsoft 最初对此进行了验证。一段时间后,Microsoft 将该员工踢出并在他们的系统上将其删除。该应用程序应该能够在用户每次登录时与 Microsoft 核实,以查看声明是否有效。在这种情况下,它将不再有效。
我是不是有点生气了?
最佳答案
在您链接到此问题时将其张贴在这里 from my blog , 它可能对某人有用
I think you have misunderstood slightly about the nature of a claim, which I can understand given the terminology. You seem to be taking 'Claim' as meaning the user is 'professing' that they have a certain attribute, and you want to check that this is true.
That is not the way claims work here. Claims are essentially 'attributes' of the user. In the old way of working with roles, a user would belong to a certain number of roles. These are just 'attributes' the user has now, so are more generic. A user may have a number of claims corresponding to the roles they are in.
The identity of the user is checked during authentication, and at that point you assign the set of
Claims
that the user has to theClaimsIdentity
object. This is the point you fetch the claims from the database, and make sure they only get the ones they should have. If you need to have someone verifying claims, then you would need to have that whole process happening outside of this. Only the claims which have been confirmed should be added to theClaimsIdentity
.Now, there is an event you can handle on the
CookieAuthenticationMiddleware
to validate a security ticket when it is loaded on subsequent requests called ValidatePrincipal, but I'm not sure if this is actually what you need.
以及您随后的回复:
Thank you for your response. I understand now that these claims are effectively verified claims once they get into the db. I guess they could be removed from the db as a way of revoking the claim.
However, I think, as you suggest, the best way is to have this system outside and it just provides claims as and when required. The design is that the application will have accounts for different types of entity and accounts will be able to make claims, for example that "I am a parent". The parent would seek an authorizing account to validate this. This might require the authorizing account holder to actually see some real documentation before validating. Other claims, could change. For example a parent with Parental Responsibility would need a bit more verification, but may also lose that Parental Responsibility in the real world and so a facility for revoking the claim needs to be available.
So, I think the design should be to use the claims system with the Authorize attribute following your excellent articles, but have a separate system that allows for validation and revoking that feeds that claims system.
关于c# - 如何管理用户 claim ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42391424/
如果达到我的自定义政策中的特定步骤/条件,我将尝试从 claim 包中删除所有 claim ,但我找不到任何相关信息。然后我尝试对字符串使用 NullClaim Transformation,但我找不
我正在实现一个 oAuth 服务器并且需要存储刷新 token ,为此我(目前)选择将 token 序列化为 JSON。 虽然我可以看到 JSON 包含重新水化所需的一切,但当我使用 token.Fr
我正在创建一个简单的 WebApi,它允许用户连接到 Facebook。当我从 facebook 取回 accessToken 时,我调用 RegisterExternal 来创建一个 Asp.Net
我似乎无法序列化 Claim - 我做错了什么?使用此方法的其他对象序列化工作正常。 代码 var client = new MongoClient("mongodb://localhost:2701
我正在尝试在 ASP.NET Core 中使用基于 Windows 身份验证的声明授权。我有一个设置用户声明的声明转换器。我还通过 DbContext 将 IPrincipal 注入(inject)到
我直接使用 AspNetUserClaims 表,因为它主要属于我的 ASP.NET 应用程序,但也被 Windows 应用程序使用。 ASP.NET 应用程序使用 Google 进行外部登录,而 W
我从 ASP.NET Identity 的声明授权开始,如果我的应用程序中需要“角色”概念,我想阐明处理它们的方式。 注意:我对这个真的很陌生,所以所有的概念都在我脑海中飞舞,请多多关照,对于任何概念
我已经安装了 WSO2 IS 5.2.0,但我无法检索自定义创建的声明。 我为方言添加了新声明 http://wso2.org/claims我还添加了将相同属性映射到方言的新声明 http://wso
我们正在尝试使用组织 AD 作为 IDP,使用 SAML 和 Azure B2C 作为服务提供商 (SP) 设置 SSO。Org AD 被许多其他 SP 供应商用作 IDP(SAML),并且工作得很好
我正在开发一个 MVC4 应用程序,该应用程序使用 ADFS 对公司域用户进行身份验证,我已经编写了代码,但收到如下错误,我是否没有收到 claim ? System.InvalidCastExcep
我收到针对 Azure AD 进行身份验证的用户的组超额 claim 。如下所示: {"src1":{"endpoint":"https://graph.windows.net/TENANTID/us
我收到针对 Azure AD 进行身份验证的用户的组超额 claim 。如下所示: {"src1":{"endpoint":"https://graph.windows.net/TENANTID/us
是否可以将 SAML 声明发送到 ADFS,然后让 ADFS 使用来自传入声明的值来生成自己的声明? 基本上,我们需要发送 a)关于用户的信息(相当简单),以及 b)关于目标的信息(手头的问题)。目标
我目前正在开发 API。 token 从 IdentityServer4 返回。 我正在尝试从 token 声明中取回子 ID,即当前授权用户的 ID。我可以在此处的声明中看到它。 { "nbf"
我目前正在使用 asp.net core 设计一个系统,我想实现基于声明的授权,但有一个特定的部分让我感到困惑。 当提出声明时,声明将包括类型和值以及可选的发行者。在处理程序中,可以在确认访问之前检查
我需要从 JWT 中提取声明。 看来这应该是理所当然的。 它已签名,从我得到的标题中: { "alg": "RS256", "typ": "JWT" } 智威汤逊: eyJhbGciOiJSU
我是一个长期的 .NET Framework/WebForms 开发人员,并且正在为一个新项目转向 Core (2.1)。我已经建立了基础部分,一个 VS 解决方案包含一个 DAL 项目和一个 Web
我正在尝试根据特定声明的值过滤用户。 我使用 ASP .Net Core 3 和 RavenDB。 filteredData = data.Search(d => d.Email, model.sea
我将 WSO2 身份服务器用于单点登录实现。 在我的演示应用程序中,我试图从我自己的 JDBC 数据库中获取经过身份验证的用户的自定义声明属性。 我关注了这个 blog普什帕兰卡。 这适用于 Iden
我想通过Identity内的Claim访问我的电子邮件地址 我尝试访问为: var email = User.Identity.GetClaimsByType("emailaddress").ToSt
我是一名优秀的程序员,十分优秀!