无法使用OIDC将ASP.NET MVC连接到Azure AD

4jb9z9bj  于 2023-02-05  发布在  .NET
关注(0)|答案(1)|浏览(137)

我正在尝试使用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)
你知道我在这里没得到什么吗?

lnlaulya

lnlaulya1#

这毕竟是一个错误的Tennant ID。我通过在 Startup.Auth.cs 中将IdentityModelEventSource.ShowPII设置为true来意识到这一点,如以下答案所示:https://stackoverflow.com/a/55027625/2975357

相关问题