Azure Поток кода OAuth2 - в токене доступа нет претензий групп (и нет "hasgroups") - PullRequest
0 голосов
/ 09 января 2020

Я использую поток кода OAuth2 и пытаюсь вернуть группы пользователей в свой токен доступа. Все, что я читаю, говорит о том, что я должен видеть либо утверждение группы, либо утверждение hasgroups, но не вижу ни того, ни другого.

Я изменил следующие поля в манифесте регистрации приложения для моего клиентского приложения:

"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
        "idToken": [],
        "accessToken": [
            {
                "name": "groups",
                "source": null,
                "essential": false,
                "additionalProperties": [
                    "dns_domain_and_sam_account_name"
                ]
            }
        ],
        "saml2Token": []
    },

Вот пример моей строки запроса для URL перенаправления входа в систему (login.microsoftonline.com) ...

client_id=<clientId>
&response_type=code
&redirect_uri=<redirectUri>
&response_mode=query
&scope=<appScope>%20offline_access
&state=67890

Вот пример моей строки запроса для запроса токена с использованием authCode (login.microsoftonline.com/ enjtenantIdcasts/oauth2/v2.0/token)

client_id=<clientId>
&scope=<uriEncodedScopes>%20offline_access
&redirect_uri=<uriEncodedRedirectUri>
&code=<authCode>
&client_secret=<uriEncodedClientSecret>
&grant_type=authorization_code

Все работает отлично, но я не могу понять, как получить информацию о группах обратно в мой токен.

ОБНОВЛЕНИЕ

Я добавил% 20openid к своей области в обоих URL, и теперь я получаю id_token, но я все еще не вижу "группы" или "hasgroups" в любом из токенов.

UPDATE

Я только что добавил те же самые изменения манифеста (groupMembership, optionClaims) в мою регистрацию приложения API (вместо моего клиента) - API, который выставляет область, и я не вижу никаких изменений , Токен доступа и Id-токен вообще не имеют ссылок на группы.

1 Ответ

0 голосов
/ 10 января 2020

В моем тесте должно работать. И вам просто нужно настроить groupMembershipClaims, optionalClaims в вашей регистрации приложения API, см. причина ниже.

enter image description here

Вы можете сослаться на мой тестовый образец ниже, я пробовал использовать рабочий или личный аккаунт, оба работают.

Запросить код авторизации (api://3e013fde-xxxxxxa422f3/User.Test - это мое разрешение API):

https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize?
client_id=xxxxxxxxxxxxxxx
&response_type=code
&redirect_uri=https://localhost
&response_mode=query
&scope=openid offline_access api://3e013fde-xxxxxxa422f3/User.Test
&state=12345

Запрос токена:

enter image description here

Расшифруйте токен в https://jwt.io/, заявка groups

enter image description here


Примечание:

Мои клиентское приложение и приложение API созданы сегодня Я полагаю, что между приложением, созданным в old App Registration(it is not existing in the portal currently), app registration portal(it has been moved to the new App Registrations), new App Registration(the Регистрация приложения in portal currently), может быть какая-то разница.

И из этого сделать c:

enter image description here

Во время моего теста также произошла странная вещь когда я создаю новую регистрацию приложения API, просто установите "groupMembershipClaims": "SecurityGroup" без установки optionalClaims, манифест будет выглядеть следующим образом.

"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
        "idToken": [],
        "accessToken": [],
        "saml2Token": []
    }

Тогда Access token не будет включать groups, ID token имеет groups.

Если я установлю его с вашим, у Access token будет groups.

"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
        "idToken": [],
        "accessToken": [
            {
                "name": "groups",
                "source": null,
                "essential": false,
                "additionalProperties": [
                    "dns_domain_and_sam_account_name"
                ]
            }
        ],
        "saml2Token": []
    }

Но когда я установлю его, вернитесь к

"groupMembershipClaims": "SecurityGroup",
"optionalClaims": {
        "idToken": [],
        "accessToken": [],
        "saml2Token": []
    }

У Access token все еще есть groups.

С портала - Token configuration (preview) и это сделать c - Configure group claims for applications with Azure Active Directory (Public Preview), функция должна быть в предварительном просмотре, это может быть ошибка (я не уверен).

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

...