gpt4 book ai didi

asp.net - 如何向身份服务器中的 userinfo 端点添加角色

转载 作者:行者123 更新时间:2023-12-03 19:49:10 26 4
gpt4 key购买 nike

我一直在使用身份服务器快速启动应用程序,我想添加调用userinfo端点时要返回的角色信息。

  public Claim[] GetUserClaims(UserServiceProxy.Dto.User user)

{
return new Claim[]
{
new Claim(JwtClaimTypes.Name, user.Username),
new Claim(JwtClaimTypes.Email, user.Email),
new Claim(JwtClaimTypes.GivenName, user.Firstname),
new Claim(JwtClaimTypes.FamilyName, user.Lastname),
new Claim(JwtClaimTypes.Subject, user.Username),
new Claim(JwtClaimTypes.Role, user.Role ?? "normal"), //have added this
};
}

这是从我的 GetProfileDataAsync 调用的
if (context.RequestedClaimTypes.Any())
{
var user = UserClient.FindByUserName(context.Subject.GetSubjectId());
if (user != null)
{
context.AddRequestedClaims(UserClient.GetUserClaims(user.Result.User));
}
}

当我调用/connect/userinfo 端点时,我得到了这个(无角色):

{"name":"joe3","given_name":"Joe","family_name":"Three","sub":"joe3"}

最佳答案

没关系,我发现问题是我需要:

  • 将 Role 的新身份资源添加到由
    获取身份资源
    public static IEnumerable<IdentityResource> GetIdentityResources()
    {
    return new List<IdentityResource>
    {
    new IdentityResources.OpenId(),
    new IdentityResources.Profile(),
    new IdentityResources.Email(),
    new IdentityResource{Name = "roles", UserClaims={JwtClaimTypes.Role}}
    };
    }
  • 将角色范围添加到客户端的 AllowedScopes 列表
    AllowedScopes = new List<string>
    {
    IdentityServerConstants.StandardScopes.OpenId,
    IdentityServerConstants.StandardScopes.Profile,
    IdentityServerConstants.StandardScopes.Email,
    "roles",

    },
  • 在请求中添加对角色范围的请求。
          "RequestedScopes": "openid profile email roles",
  • 关于asp.net - 如何向身份服务器中的 userinfo 端点添加角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47829073/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com