在.NET4.5中引入了声明,以System.Security.Claims命名空间中的ClaimsIdentity和ClaimsPrincipal的形式将基于声明的身份验证构建到框架中。
如何使用 Okta 转换 Spring Boot 应用程序以读取 okta 组
不久前,我创建了一个 Spring Book 应用程序,它使用 Okta 作为 OIDC 提供程序。它基于 Matt Raible 的这个优秀示例的先前版本。 我现在想做的是获得...
.Net core - 是否可以根据传入请求使用动态声明来实现自定义声明验证?
是否可以在.net core 3.1或.net 6中实现自定义ClaimsValidation?如果是,怎么办? 我们有通用的单一休息端点,可以根据...中提到的“报告名称”返回任何报告。
在 .net 6 blazor 应用程序中进行身份验证后,如何将自定义声明添加到 ClaimsPrincipal?
https://learn.microsoft.com/en-us/aspnet/core/security/authorization/claims?source=recommendations&view=aspnetcore-7.0 上面的文章很好地解释了如何利用
我的要求是管理员用户可以授权其他用户访问站点中的页面数。 用户及其分配的页面存储在数据库中,格式如下。 Id UserId ClaimType 页面 1 ...
我在 GenerateUserIdentityAsync 方法中添加声明: 公共类 ApplicationUser : IdentityUser { 公共异步任务 GenerateUserIdentityAsync(UserManager 我在 GenerateUserIdentityAsync 方法中添加声明: public class ApplicationUser : IdentityUser { public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager) { var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); userIdentity.AddClaim(new Claim(ClaimsStaticStrings.Inactivity, company.Inactivity.ToString())); return userIdentity; } } 然后我尝试在帐户/登录方法中获取它: [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel model, string returnUrl) { var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: false); switch (result) { case SignInStatus.Success: int inactivity = Utils.GetInactivityFromIdentity(User.Identity); Response.Cookies.Add(new HttpCookie("inactivity", inactivity.ToString())); return RedirectToAction("Index", "Home"); } } public static int GetInactivityFromIdentity(IIdentity identity) { System.Security.Claims.ClaimsIdentity claims = (System.Security.Claims.ClaimsIdentity)identity; var claim = claims.FindFirst(Models.ClaimsStaticStrings.Inactivity); if (claim != null) { return int.Parse(claim.Value); } else throw new Exception("Inactivity is not set"); } 它抛出异常“Inactivity is not set”。变量 'claims' 只有一个声明 - name 但是当我从任何其他页面(重定向后)调用 GetInactivityFromIdentity 方法时 - 它工作正常(并且声明中充满了所有设置的声明)。为什么会这样? 声明被序列化到 auth-cookie 中。在您通过身份验证重新加载页面之前,不会设置 Cookie。在您尝试从 cookie 访问声明时,HTTP 请求中没有 cookie - SignInManager 只会在请求完成时设置 cookie,但不会在请求完成后立即设置。您确实需要一个重定向/页面重新加载周期来获取可用的 cookie 和声明。 您必须以某种方式获得inactivity价值,而不是通过声明,而是在您登录用户时从您的数据存储中获得。 无法访问登录用户声明的原因是登录过程中设计的事件顺序 - .Net 问题。 当您执行调用 SignInManager.SignIn() 时,事件顺序将带您完成项目的扩展类 ApplicationSignInManager,它派生自 SingInManager - 在其中您会发现一个名为 CreateUserIdentityAsync 的覆盖方法,它会被触发通过登录调用。 在这个方法中,用户身份声明被创建并返回(通过调用 GenerateUserIdentityAsync),只有在登录过程的后期才能访问它们。 这里的工作是在 ApplicationSignInManager 类中创建一个名为 AppUserClaims 的 ClaimsIdentity 类型的公共属性,并使用它来存储用户身份声明值,然后再将它们检索到登录流程。 public override Task<ClaimsIdentity> CreateUserIdentityAsync(ApplicationUser user) { var iClaims = user.GenerateUserIdentityAsync((ApplicationUserManager)UserManager); AppUserClaims = iClaims.Result; return iClaims; } 一旦你存储了这个属性的声明,回到登录方法内部,你就可以像下面这样访问它——记住声明值总是字符串类型: string YourX = SignInManager.AppUserClaims.FindFirst("YourX").Value;
所以我想让我的 wordpress 用户声明并成为我的帖子或页面的作者角色,并根据他们的包裹设置时间限制。假设一个月,之后作者将成为管理员...
我创建了一个自定义的 IClaimsTransformation 类,它从配置文件中获取允许的组列表。如果用户在其中一个组中,则添加声明。我可以验证索赔是否得到
元素未显示在 UI 中:Azure AD B2C 自定义策略
我正在尝试自定义登录页面。 我的问题是以下问题。在登录页面中,我需要一个下拉菜单,以便用户可以选择首选的 MFA 方法。 但是,如您所见,那里...
AWS Cognito 和身份服务器在 C# 应用程序中缺少声明
将 AWS Cognito 与身份服务器一起使用我无法在 id_token 或 access_token(来自我的客户端应用程序)中获得完整声明。 我们需要获取的属性之一就是email,这个是
我正在尝试在维基数据中创建一个脚本,该脚本为某些实体创建一个声明,该声明具有作为标识符的特定属性,并且作为该属性的值,我想放置一个外部标识符...
`ClaimsPrincipal.IsInRole`在索赔中期待什么?
我有一个叫做组的要求。当我设置我的TokenValidationParameters时,我将RoleClaimType设置为group。当声明通过时,group声明的值是这样的。"something,some...
在ASP.NET Core Web API中访问和使用UserClaims。
我是第一次使用ASP.NET Core Web API,对它很陌生。我已经添加了索赔,现在我想某种程度上 "读取 "并访问它们。谁能帮我解决这个问题?
我在AAD中使用一个扩展属性来存储一些自定义的索赔,我需要通过一个SSO Ent应用程序发送回ADFS。我需要这些索赔是单独的值(见截图)我的问题是...
在ASP Core ADB2C应用程序中缺少OID Claim。
我有一个工作的ASP.NET Core ADB2C应用程序,它使用自定义策略,并配置为验证本地(ADB2C)和谷歌帐户。我最近注意到OID声明不见了。
我正在与我的身份服务器建立一个客户端凭证流,以从客户端获取访问令牌。我可以用下面的代码来获取访问令牌,身份服务器配置:公 ...
我在网上找到了很多关于如何配置ADFS作为服务提供商的信息,很多文档,但是,我在ADFS的配置界面看起来和我看到的截图完全不一样 ...
让我们说我有一个包含一组团队的API。连接到这些团队的是用户和其他资源,例如时间表。在数据库中,我们有两个用户。用户1是团队1和3的成员...
我已经向用户添加了一些自定义声明,我想知道是否要使用属性检查这些声明是否存在于控制器操作中,我知道我们可以创建一个类并扩展属性...
我正在为Umbraco(ADFS)实施SSO,登录并创建用户都可以正常工作。我唯一不知道的是,当我输出声明时,得到正确的用户名册(声明):string ....
我需要阅读Azure广告用户的“部门”。我检查了资源https://docs.microsoft.com/zh-cn/azure/active-directory/develop/active-directory-optional-claims,但这无济于事,因为我可以...