Как войти в Azure SQL, используя удостоверение пользователя из приложения ASP.Net

У меня есть приложение ASP.Net, которое использует аутентификацию Azure AD, однако я хочу подключиться к базе данных Azure, используя удостоверение пользователя, вошедшего в систему. «Встроенная служба Active Directory не работает для этого сценария.

Когда пользователь входит в мое приложение, используя страницу входа в систему Microsoft, тот же пользователь должен иметь возможность войти (а не идентификатор приложения) в базу данных и выполнить некоторое выполнение.


person sainadh Nani    schedule 19.09.2019    source источник
comment
Как я могу получить токен для базы данных на основе вошедшего в систему пользователя, если я хочу использовать аутентификацию на основе токена для azure sql.   -  person sainadh Nani    schedule 19.09.2019


Ответы (1)


Вы можете сослаться на код ниже:

public async Task<string> GetTokenForApplicationAsync()
        {
            string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
            string tenantID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value;
            string userObjectID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/objectidentifier").Value;

            // get a token for the Graph without triggering any user interaction (from the cache, via multi-resource refresh token, etc)
            ClientCredential clientcred = new ClientCredential(Startup.ClientId, Startup.AppKey);

            // initialize AuthenticationContext with the token cache of the currently signed in user, as kept in the token cache
            AuthenticationContext authenticationContext = new AuthenticationContext(Startup.AadInstance + tenantID, new ADALTokenCache(signedInUserID));
            AuthenticationResult authenticationResult = await authenticationContext.AcquireTokenSilentAsync("https://database.windows.net/", clientcred, new UserIdentifier(userObjectID, UserIdentifierType.UniqueId));
            return authenticationResult.AccessToken;
        }

Вот пример веб-приложения, которое интегрируется с Azure AD. и получите токен доступа для вызова Microsoft Graph API. Просто замените GraphResourceId на https://database.windows.net/.

person Tony Ju    schedule 20.09.2019