Mat*_*ger 6 c# asp.net-mvc authorization claims-based-identity
由于我想向应用程序中添加自定义声明,因此我检查了ClaimTypes的源代码(由JetBrains反编译器反编译)。这是其中的一部分:
namespace System.Security.Claims
{
/// <summary>Defines constants for the well-known claim types that can be assigned to a subject. This class cannot be inherited.</summary>
[ComVisible(false)]
public static class ClaimTypes
{
internal const string ClaimTypeNamespace = "http://schemas.microsoft.com/ws/2008/06/identity/claims";
/// <summary>The URI for a claim that specifies the instant at which an entity was authenticated; http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant.</summary>
public const string AuthenticationInstant = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationinstant";
/// <summary>The URI for a claim that specifies the method with which an entity was authenticated; http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod.</summary>
public const string AuthenticationMethod = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod";
/// <summary>The URI for a claim that specifies the cookie path; http://schemas.microsoft.com/ws/2008/06/identity/claims/cookiepath.</summary>
public const string CookiePath = "http://schemas.microsoft.com/ws/2008/06/identity/claims/cookiepath";
/// <summary>The URI for a claim that specifies the deny-only primary SID on an entity; http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarysid. A deny-only SID denies the specified entity to a securable object.</summary>
public const string DenyOnlyPrimarySid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarysid";
/// <summary>The URI for a claim that specifies the deny-only primary group SID on an entity; http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarygroupsid. A deny-only SID denies the specified entity to a securable object.</summary>
public const string DenyOnlyPrimaryGroupSid = "http://schemas.microsoft.com/ws/2008/06/identity/claims/denyonlyprimarygroupsid";
Run Code Online (Sandbox Code Playgroud)
我的问题是(但我希望这不太傻),URL的用途是什么?他们在其他地方使用吗?当我尝试打开URL时,我的浏览器说找不到该网站。因此,我认为没有xml模式或背后的东西。如果我添加了自定义声明,是否还必须添加类似这些URL的内容?
这些是ClaimTypes,代表实体可以声明的声明的预定义类型。您提到的来自WIF,这里是IdentityModel ClaimTypes。
已知的声明类型会自动反序列化到上下文中。Like http://schemas.microsoft.com/ws/2008/06/identity/claims/role被添加为user.roles集合的角色(用于IsInRole)。
因此,类型不是随机的,而是根据规范。您可以添加自己的类型。它可以是任何字符串,但也可以使用相同的格式。
假设您添加一个CustomerId作为声明,那么您需要通过claimtype="CustomerId"或您定义的uri(例如http://schemas.mycompany.com/2017/06/identity/CustomerId)查询Claims集合。
您可以通过代码或在Identity.Claims表中插入记录来添加声明。
| 归档时间: |
|
| 查看次数: |
1855 次 |
| 最近记录: |