asp.net - ADFS 本机应用程序访问令牌缺少声明
问题描述
我正在尝试对使用 ADFS 与我的 ASP.NET MVC API 进行通信的 WPF 应用程序进行身份验证。我已经设法获取访问令牌并使用它来正确传递Authorize
属性,但我注意到访问令牌缺少一些upn
我想在 API 控制器中用于唯一用户标识的关键声明(例如)。我还注意到IdToken
字符串和对象在成功验证后与对象中的字符串UserInfo
一起可用,并且它们都包含正确的值。AccessToken
AuthenticationResult
upn
问题是当我收到响应错误时,我无法使用IdToken
授权标头。Unauthorized
我Microsoft.IdentityModel.Clients.ActiveDirectory
在我的客户端应用程序和Microsoft.Owin.Security.ActiveDirectory
API 中的库中使用。
客户端代码:
var authRes = await authCtx.AcquireTokenAsync(resourceAddress, clientId, new Uri(redirectUri), new PlatformParameters(PromptBehavior.Auto)); //resourceAddress equals the API url
接口代码:
app.UseActiveDirectoryFederationServicesBearerAuthentication(
new Microsoft.Owin.Security.ActiveDirectory.ActiveDirectoryFederationServicesBearerAuthenticationOptions
{
MetadataEndpoint = ConfigurationManager.AppSettings["ida:AdfsMetadataEndpoint"], //standard ADFS metadata endpoint
TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters()
{
ValidAudience = ConfigurationManager.AppSettings["ida:Audience"] // API url
},
});
ADFS 服务器上还为 UPN 值配置了声明规则:
解决方案
推荐阅读
- gatling - Gatling:仅当循环中的一个调用失败时打印到文件
- android - Flutter 2.2.3:空值检查运算符
- node.js - 使用handy-redis将redis(redislab)与节点(typescript)连接起来
- powerbi - 如何从 Power BI 中的另一个(不相关)表中检索选定的值
- apache-nifi - POST 使用 RestLookupService
- azure-ad-b2c - Azure AD B2C 如果用户多次尝试验证码失败,等待时间是多少
- reactjs - 如何防止 React 出现包版本差异问题
- python - 数据加载器未定义,但我已导入它
- ruby-on-rails - 在rails中读取带有德语字符的csv文件
- go - Go 尝试处理错误而不是我