c# - IdentityServer4 和 UserInfo 端点自定义
问题描述
我创建了一个 IdentityServer4 应用程序,如果我在该应用程序中登录,用户声称一切正常。如果我从另一个客户端应用程序 (MVC) 登录,则 UserInfo 端点不会返回相同的声明。
IdentityServer 配置了 ASP.NET Identity,因此 UserProfile 已经配置为返回所有 UserClaims,就像我创建的那样。
我不明白为什么它没有显示在同意视图中,或者它没有包含在 UserInfo 端点结果中
解决方案
请检查以下几点是否可以解决您的问题
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”。
推荐阅读
- python - Python - 你如何绘制数据直方图?
- node.js - 使用 Passport.js,密码正在本地策略中验证,但用户未经过身份验证
- c - 如何列出我的应用程序打开的文件描述符,或者至少计算它们?
- node.js - 只能安装 NodeJS v6.17.1
- angular - 英雄之旅 - 为什么要更新消息?
- excel - 如何将分配给文本的两个值相乘?
- c# - 在 C# 中使用 ioctl
- docker - 如何在 jwilder nginx docker image 后面使用 gitea 设置无人机
- c - 从删除 \n 和 \0 的字符串创建协议行
- javascript - 调用 Firebase 函数时,httpsCallable 不是函数