我正在尝试对使用ADFS与我的ASP.NET MVC API通信的WPF应用程序进行身份验证。我设法获取了访问令牌并使用它正确地传递了Authorize
属性,但是我注意到访问令牌缺少一些我想要的重要声明(例如upn
)。用于API控制器中的唯一用户标识。我还注意到,成功认证后,IdToken
字符串和UserInfo
对象与AccessToken
对象中的AuthenticationResult
字符串一起可用,并且它们都包含正确的{{ 1}}值。
问题是当我收到upn
响应错误时,无法将IdToken
与授权标头一起使用。
我正在使用客户端应用程序中的Unauthorized
和API中的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
还为ADFS服务器上的UPN值配置了声明规则: