我正在尝试开发一个应用程序,任何租户的任何用户都可以在其中登录以使用我的应用程序。为此,我将应用程序URL注册为多租户应用程序到Azure租户(从Azure的属性窗格)。
。这是我的个人启动代码
Public Sub Configuration(app As IAppBuilder)
If ConfigurationManager.AppSettings("applicationtype") = "MultiDB" Then
JwtSecurityTokenHandler.DefaultMapInboundClaims = False
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)
app.UseCookieAuthentication(New CookieAuthenticationOptions())
app.UseOpenIdConnectAuthentication(New OpenIdConnectAuthenticationOptions() With
{
.ClientId = ConfigurationManager.AppSettings("ida:ClientId"),
.Authority = ConfigurationManager.AppSettings("ida:AADInstance"),
.RedirectUri = ConfigurationManager.AppSettings("ida:RedirectUrl"),
.PostLogoutRedirectUri = ConfigurationManager.AppSettings("ida:LogoutUrl"),
.TokenValidationParameters = New Microsoft.IdentityModel.Tokens.TokenValidationParameters With
{
.ValidateIssuer = False,' i disabled issuer validation for the multi-tenant application
.NameClaimType = "upn",
.RoleClaimType = "roles"
},
.Notifications = New OpenIdConnectAuthenticationNotifications() With
{
.AuthenticationFailed = Function(context)
context.HandleResponse()
context.Response.Redirect("Error.aspx" + context.Exception.Message)
Return System.Threading.Tasks.Task.FromResult(0)
End Function
}
})
End If
End Sub
但是,如果我尝试使用其他租户的用户身份登录,则会收到错误消息 “ AADSTS50020:来自身份提供商“ live.com”的用户帐户“ xxx@outlook.com” 租户“默认目录”中不存在,并且无法访问该应用程序 该租户中的'59e67663-4689-xxxx-axxx-xxxxxxxxxx'(示例应用)。该帐户需要添加 作为租户中的外部用户。注销并使用其他Azure Active Directory用户帐户再次登录。”
<add key="ida:AADInstance" value="https://login.windows.net/common" />
<add key="ida:ClientId" value="xxxx" />
<add key="ida:TenantId" value="xxxxxxxxx" />
<add key="ida:PostLogoutRedirectUri" value="https://localhost:44322/" />
<add key="ida:RedirectUrl" value="https://localhost:44316/Login.aspx"/>
<add key="ida:LogoutUrl" value="https://localhost:44316/Logout.aspx"/>
但是我的假设是,如果我在端点中输入“ common”,则任何租户中的任何用户都可以登录到应用程序,并且当他们登录时,我们可以获取该用户租户的详细信息。错误消息的原因是什么?我的假设是正确的吗?