У меня есть веб-приложение 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)