用于向声明感知应用程序呈现身份的应用程序模型。此标识包含来自受信任来源的安全包中的声明元素,例如电子邮件地址或用户名。此模型将应用程序与身份验证机制分开。
postgresql current_setting('request.jwt.claim.id'::text, true)::integer;
我正在尝试创建一个函数来从 JWT 令牌获取 id 并将其传递给另一个函数。当我通过传递 JWT 令牌从邮递员进行测试时,如果我的有效负载包含 o...
为什么这段向 ClaimsPrincipal 添加声明的代码是正确的?
我正在尝试使用我自己的 IClaimsTransformation 实现中的 TransformAsync 方法来操作我的 Web 应用程序中的声明。 微软文档中的示例代码如下所示: 我们...
使用 async/await 设置 Thread.CurrentPrincipal
下面是我尝试在异步方法中将 Thread.CurrentPrincipal 设置为自定义 UserPrincipal 对象的简化版本,但自定义对象在离开等待后会丢失
我正在从事 Blazor Web Assembly 的客户端项目。 这是我的程序: 使用 Blazored.LocalStorage; 使用 Epicerie_Client; 使用 Epicerie_Client.Services; 使用 Epicerie_Client.Services.Interfaces;...
使用 IdentityServer 和另一个 JwtBearer 令牌进行身份验证
中央服务将 IdentityServer 作为当前的身份验证方法,需要保持不变。 现在需要支持另一个 Jwt 不记名令牌。 似乎有可能拥有两个令牌...
如何在 .NET Framework 4.7 ASP.NET Web API 端点上应用 Microsoft Identity Platform 身份验证
我有一个使用 .NET Framework 4.7.2 构建的旧版 ASP.NET Web API 应用程序,目前尚未为其实现身份验证。如何应用 Microsoft Identity Platform 身份验证...
System.Web.Mvc.HttpAntiForgeryException:MVC 5
使用MVC 5.1.1/VS 2013 Professional/.Net 4.5 我偶尔会收到错误(来自本地主机和生产 IIS 7): System.Web.Mvc.HttpAntiForgeryException:防伪造cookie tok...
AspNet Identity Core - 自定义登录声明
我正在尝试通过在数据库中添加逻辑“已删除”列来扩展我的身份用户。 然后,我想使用该值通过自定义 UserClaimsPrincipalFactory 向用户添加声明。 我想要...
Azure Active Directory 强制执行图形端点而不是组声明
根据文档,如果用户是 200 个或更多组的成员,则默认返回的 JWT 令牌将不包含组声明;它将包含 _claim_names 和
AuthorizationContext.Principal 会自动从 ClaimsPrincipal 更改为 GenericPrincipal
我不知道为什么 AuthorizationManager 中的上下文原则会发生变化。我的代码就像 公共类 AuthorizationManager :ClaimsAuthorizationManager { 公共覆盖 bool CheckAcc...
我应该为 OpenIdConnectOptions.SignOutScheme 设置什么?
我正在使用 .NET 6 和 Identity Server 4。 我应该为 OpenIdConnectOptions.SignOutScheme 设置什么? 这是我在 Startup.ConfigureServices() 中的内容: .AddOpenIdConnect("oidc", "
Request/Response中的Identity对象和Principal有什么区别?
我正在使用 .NET 6 和 Identity Server 4。 这三个 Identities 有什么区别(这是从 OpenIdConnectEvents 派生的类)? 为什么principalIdentity中有声明但没有...
自 .NET 4.5 以来,身份管理通过 ClaimsPrincipal 类进行,该类具有一个 Identities 属性,该属性通常填充一个 ClaimsIdentity 代表当前活动
我的要求是管理员用户可以授权其他用户访问站点中的页面数。 用户及其分配的页面存储在数据库中,格式如下。 Id UserId ClaimType 页面 1 ...
GenerateUserIdentity 在此方法中,我需要根据域名获取当前域名,我需要添加声明值。 Asp.net 4.5 框架
公共异步任务 GenerateUserIdentityAsync(UserManager 管理器) 在这种方法中,我需要在身份声明中添加域名。 这个方法从 2 p 调用...
使用 Microsoft.Identity.Web 的 Azure AD 登录在不同的应用程序中返回不同的声明名称
我有 2 个 Umbraco Web 应用程序在 .NET Core 6 上运行,它们都配置为使用相同的 Azure AD 应用程序注册来基于此处的代码进行后台身份验证。 作为代币的一部分
使用 Web 应用程序代理时 ADFS 3.0 错误事件 ID 511 和 364
我们正在尝试设置我们的开发环境,当 WAP 与 ADFS 一起使用时,我们正面临问题。以下是我们目前所拥有的。 我们的 ADFS 服务器绑定到 Active Directory 并且正在工作...
我在 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;
我正在使用 Keycloak 作为应用程序的身份提供者。用户可以直接通过Keycloak创建账户,用户需要填写一些映射到OIDC sta的个人信息...
Azure AD b2c 自定义策略访问令牌在使用应用程序时每 15 米突然过期
我们在 MVC 应用程序中使用 azure AD b2c,Identity Experience Framework 自定义策略身份验证。 我们在代码中将令牌过期超时设置为 4 小时,但它仍然会在......内过期