Аутентификация с использованием ASP.NET Azure WebApp и удостоверения управляемой службы - PullRequest
0 голосов
/ 23 мая 2018

У меня есть веб-приложение Azure, которое проверяет подлинность пользователей с помощью приложения Azure AD.

       app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = ClientId,
                Authority = Authority,
                PostLogoutRedirectUri = PostLogoutRedirectUri,

                Notifications = new OpenIdConnectAuthenticationNotifications()
                {
                    // If there is a code in the OpenID Connect response, redeem it for an access token and refresh token, and store those away.
                    AuthorizationCodeReceived = (context) =>
                    {
                        var code = context.Code;
                        var credential = new ClientCredential(ClientId, AppKey);
                        var signedInUserId = context.AuthenticationTicket.Identity.FindFirst(ClaimTypes.NameIdentifier).Value;
                        var token = authenticationService.GetADALTokenCache(signedInUserId);
                        var authContext = new AuthenticationContext(Authority, token);

                        return authContext.AcquireTokenByAuthorizationCodeAsync(
                            code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, GraphResourceId);
                    }
                }

Это работает на 100% нормально с конфигом, который я передаю. Теперь я добавил идентификацию Managed Service Identity, чтобы я мог предоставить доступ к другим ресурсам (например, Key Vault) для веб-приложения.Sweet.

Это делает идентификацию приложения, которое я использую для OpenIdConnectAuthentication, избыточной.Могу ли я просто использовать удостоверение управляемой службы для выполнения проверки подлинности вместо двух учетных записей - одной для MSI и одной для проверки подлинности пользователя?

При использовании MSI я не хочу указывать ClientID и AppKey из конфига, я просто хочу, чтобы он проходил все время, используя мою учетную запись для локального разработчика (и работая на localhost)и MSI, назначенный веб-приложению при развертывании.

Я использую полную .Net Framework (т.е. не Core)

...