Чтобы получить токен доступа

Я создал приложение MVC, чтобы передать работу другому человеку в моей организации. Я добавил всех членов своей организации в AAD и зарегистрировал там приложение, создал службу приложений и связал эту службу приложений с зарегистрированным приложением с включенным SSO.

Теперь каждый раз, когда кто-то посещает приложение, он может успешно войти в систему, используя соответствующие учетные данные.

То, что я хочу знать, - это извлечь всех участников из моего AAD и отобразить их в раскрывающемся списке, чтобы любой мог перейти к другим, просто заглянув в раскрывающийся список.

Я попытался с помощью примера графа SDK получить имя пользователя в моей организации с этим кодом

    private string redirectUri = ConfigurationManager.AppSettings["ida:RedirectUri"];
    private string appId = ConfigurationManager.AppSettings["ida:AppId"];
    private string appSecret = ConfigurationManager.AppSettings["ida:AppSecret"];
    private string scopes = ConfigurationManager.AppSettings["ida:GraphScopes"];

public async Task<string> GetUserAccessTokenAsync()
    {
        string signedInUserID = ClaimsPrincipal.Current.FindFirst(ClaimTypes.NameIdentifier).Value;
        HttpContextWrapper httpContext = new HttpContextWrapper(HttpContext.Current);
        TokenCache userTokenCache = new SessionTokenCache(signedInUserID, httpContext).GetMsalCacheInstance();
        //var cachedItems = tokenCache.ReadItems(appId); // see what's in the cache

        ConfidentialClientApplication cca = new ConfidentialClientApplication(
            appId, 
            redirectUri,
            new ClientCredential(appSecret),
            userTokenCache,
            null);

        try
        {
            AuthenticationResult result = await cca.AcquireTokenSilentAsync(scopes.Split(new char[] { ' ' }), cca.Users.First());
            return result.AccessToken;
        }

        // Unable to retrieve the access token silently.
        catch (Exception)
        {
            HttpContext.Current.Request.GetOwinContext().Authentication.Challenge(
                new AuthenticationProperties() { RedirectUri = "/" },
                OpenIdConnectAuthenticationDefaults.AuthenticationType);

            throw new ServiceException(
                new Error
                {
                    Code = GraphErrorCode.AuthenticationFailure.ToString(),
                    Message = Resource.Error_AuthChallengeNeeded,
                });
        }
    }

с некоторыми изменениями в области.

<add key="ida:AppId" value="xxxxx-xxxxxxx-xxxxxx-xxxxxxx"/>
<add key="ida:AppSecret" value="xxxxxxxxxxx"/>
<add key="ida:RedirectUri" value="http://localhost:55065/"/>
<add key="ida:GraphScopes" value="User.ReadBasic.All User.Read Mail.Send Files.ReadWrite"/>

Это позволяет мне получить основные сведения обо всех пользователях в моей организации. Но как я могу добиться этого в своем приложении, где связанные с аутентификацией материалы выполняются только в Azure, и нет кода для аутентификации и авторизации во всем решении.

Спасибо

Субхам, Натхорп, Индия

1 ответ

Решение

Но как я могу добиться этого в своем приложении, где связанные с аутентификацией материалы выполняются только в Azure, и нет кода для аутентификации и авторизации во всем решении.

Насколько я понимаю, вы используете встроенную функцию аутентификации / авторизации службы приложений. Вы можете выполнить здесь настройку веб-приложения для использования входа в AAD. И вам необходимо настроить необходимые разрешения для вашего приложения AD следующим образом:

Примечание. Для графика Azure AD необходимо установить соответствующие разрешения для API-интерфейса Windows Azure Active Directory. Для Microsoft Graph вам необходимо настроить Microsoft Graph API.

Затем вам нужно настроить дополнительные параметры для вашего веб-приложения. Вы можете получить доступ к https://resources.azure.com/, выбрать свое веб-приложение и обновить конфигурацию аутентификации службы приложений следующим образом:

Примечание. Для использования Microsoft Graph API необходимо установить resource в https://graph.microsoft.com, Подробности, вы можете следить здесь.

Для получения токена доступа в вашем приложении вы можете получить его из заголовка запроса X-MS-TOKEN-AAD-ACCESS-TOKEN, Подробности, вы можете следить за работой с идентификационными данными пользователей в вашем приложении.

Кроме того, вы могли бы использовать пакет https://www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient/ для API-интерфейса Microsoft Azure Active Directory Graph, пакет Microsoft.Graph для Microsoft Graph API-интерфейса, используя соответствующий токен доступа.

Другие вопросы по тегам