В Microsoft EntraID у меня есть регистрация приложения, имеющая два секрета клиента.
Я хочу получить токен доступа из этой регистрации приложения, используя тип предоставления учетных данных клиента, используя два отдельных сценария Python (script1 и script2).
Проблема в том, что невозможно отличить, был ли токен JWT получен из скрипта1 или скрипта2. Для каждого сценария я использовал отдельный секрет клиента.
Чтобы получить токен доступа JWT, я использовал этот завиток и указал, что хочу использовать тип предоставления учетных данных клиента, и попробовал использовать его с разными client_secrets. Но JWT были одинаковыми и отличить их невозможно.
curl --location 'https://login.microsoftonline.com/5fdbbf9b-ae6b-4986-8349-46baf9cffc1a/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: fpc=AsBGgX8tBlFBpcISkM-uVZHIlH0WAQAAANI0F94OAAAA' \
--data-urlencode 'client_id=4c670161-3e27-441f-b694-6538e755d94e' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_secret=xxxxxxxxxxxxxxxxxxxx' \
--data-urlencode 'scope=api://4c670161-3e27-441f-b694-6538e755d94e/.default'
Вопрос 1. Есть ли способ различать клиентов, использующих тип предоставления учетных данных клиента, когда они используют разные секреты?
Вопрос 2. Я неправильно использую этот тип гранта? Это тип разрешения, рекомендуемый для ситуации между машинами.
Я согласен с @wenbo, вы не можете различать клиентов, которые используют тип предоставления учетных данных клиента на основе секретов.
Сгенерированный токен доступа:
curl --location 'https://login.microsoftonline.com/TenantID/oauth2/v2.0/token' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'Cookie: fpc=xxx' \
--data-urlencode 'client_id=ClientID' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_secret=xxxxxxxxxxxxxxxxxxxx' \
--data-urlencode 'scope=api://xxx/.default'
Следовательно, вы можете различать токен доступа только на основе утверждений iss, appid, roles, aud, tid.
Я не думаю, что вы можете отличить клиента, использующего разные секреты.