Включить многопользовательскую регистрацию Azure AD в приложении веб-форм Tom Asp.net - PullRequest
0 голосов
/ 20 марта 2019

Я пытаюсь разработать приложение, в котором любой пользователь из любого арендатора может войти в систему, чтобы использовать мое приложение. Для этого я зарегистрировал URL своего приложения для своего клиента Azure в качестве приложения для нескольких клиентов (из панели свойств в Azure).

. Вот мой стартовый код owin

 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: учетная запись пользователя« xxx@outlook.com »от провайдера идентификации« live.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' в конечную точку, любой пользователь из любого арендатора сможет войти в приложение, и когда они войдут в систему, мы сможем получить подробную информацию о пользователе-арендаторе. В чем причина сообщения об ошибке? и верно ли мое предположение ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...