我正在尝试使用OpenID Connect设置对ASP.NET MVC 5应用程序(.NET 4.8)的SSO登录。我使用的是Azure Active Directory。该应用程序是一个全新的项目,用于测试目的,我对搭建的代码进行的唯一更改是在Startup.Auth.cs中:
// automatically added usings:
using Microsoft.IdentityModel.Tokens;
using Microsoft.Owin.Security.OpenIdConnect;
// in public void ConfigureAuth(IAppBuilder app) method:
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = "{ClientId of AAD App}",
ClientSecret = "{Secret generated for the AAD app}",
CallbackPath = new PathString("/signin-microsoft"),
MetadataAddress = "https://login.microsoftonline.com/organizations/v2.0/.well-known/openid-configuration",
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = "https://login.microsoftonline.com/{Directory (tenant) ID}/v2.0"
}
});
如果我将ValidateIssuer
设置为false
,一切正常-我设法使用我的组织电子邮件登录到应用程序。但当我将其设置为true
时,我开始收到以下错误:
IDX 10205:颁发者验证失败。颁发者:“[PII被隐藏]”。不匹配:validationParameters.ValidIssuer:“[PII被隐藏]”或验证参数。验证颁发者:“[PII被隐藏]”。
我尝试将ValidIssuer
更改为this SO线程中提到的所有选项,但没有任何效果。当前ValidIssuer
是上面MetadataAddress
中给出的URL,带有注册应用的具体 * 目录(租户)ID*。
至于注册的AAD应用程序,我已经将 * 访问令牌(用于隐式流)* 和 ID令牌(用于隐式流和混合流) 设置为true
,并将 * 支持的帐户类型 * 设置为Accounts in any organizational directory (Any Azure AD directory - Multitenant)
。
你知道我在这里没得到什么吗?
1条答案
按热度按时间lnlaulya1#
这毕竟是一个错误的Tennant ID。我通过在 Startup.Auth.cs 中将
IdentityModelEventSource.ShowPII
设置为true
来意识到这一点,如以下答案所示:https://stackoverflow.com/a/55027625/2975357