首页 > 解决方案 > IdentityServer4 和 UserInfo 端点自定义

问题描述

我创建了一个 IdentityServer4 应用程序,如果我在该应用程序中登录,用户声称一切正常。如果我从另一个客户端应用程序 (MVC) 登录,则 UserInfo 端点不会返回相同的声明。

IdentityServer 配置了 ASP.NET Identity,因此 UserProfile 已经配置为返回所有 UserClaims,就像我创建的那样。

我不明白为什么它没有显示在同意视图中,或者它没有包含在 UserInfo 端点结果中

标签: c#asp.net-coreopenididentityserver4

解决方案


请检查以下几点是否可以解决您的问题

1.) 您的身份资源和 API 资源应具有所需的 UserClaims。

2.) 检查是否有一些自定义逻辑可以在您的配置文件服务中为 userinfo 端点发出请求的声明。

public class ProfileService : IProfileService
{
    public async Task GetProfileDataAsync(ProfileDataRequestContext context)
    {
        if (context.Caller == IdentityServerConstants.ProfileDataCallers.UserInfoEndpoint)
        { 
            //custom logic to add requested claims 
            context.AddRequestedClaims(claims);
        }
    }
}

3.) 尝试在 MVC 客户端 AddOpenIdConnect 配置中设置属性“GetClaimsFromUserInfoEndpoint=true”。


推荐阅读