В чем разница между разрешениями API и выставлением API в Azure AD? - PullRequest
0 голосов
/ 13 января 2020

Привет, я работаю над Azure AD. У меня есть один проект webapi и swagger, настроенный вместе с ним. Я сопротивлялся двум приложениям в azure объявлении. Один для чванства и один для приложения webapi. Теперь я хочу реализовать авторизацию на основе групп. Итак, теперь я хочу назвать группы из Microsoft Graph API. Отсюда подопечные я растерялся. Для доступа к группам мне нужно дать разрешение на чтение графиков в моем приложении azure Ad swagger или в приложении webapi? Swagger Authentication

Ниже приведен мой код.

c.AddSecurityDefinition("oauth2", new OAuth2Scheme
                {
                    Type = "oauth2",
                    Flow = "implicit",
                    AuthorizationUrl = swaggerUIOptions.AuthorizationUrl,
                    TokenUrl = swaggerUIOptions.TokenUrl,
                    Scopes = new Dictionary<string, string>
                    {
                      { "read_user_groups", "https://graph.microsoft.com/Group.Read.All" }
                    }
                });

Сейчас в azure Объявление У меня есть разрешения API и доступ к API.

В мое приложение чванства внутри регистрации приложения У меня есть разрешение API, и я добавил Microsoft Graph и выбрал Groups.Read All. Тогда у меня есть Expose API, и мы можем добавить области. Эти две вещи сбивают меня с толку. Мое приложение чванства должно делать групповую авторизацию на моем веб-интерфейсе? Может ли кто-нибудь помочь мне в этом?

1 Ответ

1 голос
/ 13 января 2020

OK. Я думаю, что у меня есть ваши идеи.

Вы хотите предоставить доступ (к вашему веб-API) пользователям в соответствии с группой, к которой они принадлежат. Это правильно?

Итак, вам нужно позвонить в Microsoft Graph, чтобы узнать, в какую группу входит пользователь.

В этом случае вам следует вызвать Microsoft graph из веб-приложения API. (не чванское приложение)

Но , не нужно быть таким сложным.

Как я уже упоминал в комментарии, вы можете напрямую получить группы, в которые входит пользователь из вашего токена jwt.

Вы можете включить заявку на участие в вашем токене в соответствии с инструкциями здесь . Вам просто нужно изменить поле «groupMembershipClaims» в манифесте приложения веб-API:

"groupMembershipClaims": "SecurityGroup"

Тогда токен будет содержать идентификаторы групп, к которым относится использование, как показано ниже:

{
  "groups": ["1ce9c55a-9826-4e32-871c-a8488144bb32"]
}

Затем вы можете реализовать свои логины авторизации c на основе идентификатора группы пользователя.


Обновление:

Вы можете добавьте appRole в ваше приложение Azure AD (ваше веб-приложение API) и назначьте пользователей и группы ролям .

Тогда пользователи в группе получат заявите, как показано ниже:

{
  "roles": ["{the role you customized}"]
}

После этого роль будет включена в маркер доступа. И вы можете реализовать свои логины авторизации c на основе ролей пользователя.

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