Я пишу angular .io приложение, которое будет вызывать остальные API в Azure DevOps. Я использую библиотеку MSAL, и она почти работает. Я успешно аутентифицируюсь и вызываю Azure DevOps API и вижу, что перехватчик MSAL HTTP добавил токен Bearer в запрос (через Chrome средства разработчика).
https://dev.azure.com/my org/my project/my team/_apis/wit/wiql/my query id?api-version=5.1
Azure отвечает на этот запрос 302, чтобы перенаправить меня на https://spsprodcus1.vssps.visualstudio.com/_signin
. Я вижу, что токен на предъявителя также отправляется с этим запросом. Этот адрес дает мне 203 с сообщением:
Microsoft Inte rnet Конфигурация усиленной безопасности Explorer в настоящее время включена в вашей среде. Этот повышенный уровень безопасности препятствует правильному отображению или работе нашего веб-интеграции. Чтобы продолжить работу, отключите эту конфигурацию или обратитесь к администратору.
Похоже, что мое приложение не имеет разрешения на действия в DevOps. В приложении, которое я зарегистрировал для этого и указал MSAL, в «Разрешения API» я дал доступ к «Azure DevOps (1)».
Есть какие-нибудь мысли о том, что я могу сделать по этому поводу?
- Правка
Ниже приведено декодирование моего токена (с некоторыми изменениями). Я ничего с этим не делаю, MSAL, похоже, берет его из заголовка местоположения в ответ на мой запрос на авторизацию и помещает его в заголовок авторизации моего повторного вызова (с префиксом «Bearer»).
{
"typ": "JWT",
"alg": "RS256",
"x5t": "encoded Stuff",
"kid": "encoded Stuff"
}
{
"aud": "api://44df9afb-cf92-4965-9378-05317e85ab96",
"iss": "https://sts.windows.net/GUID/",
"iat": 1585087477,
"nbf": 1585087477,
"exp": 1585091377,
"acr": "1",
"aio": "encoded Stuff",
"amr": [
"wia"
],
"appid": "id of the app I registered",
"appidacr": "0",
"family_name": "Rispoli",
"given_name": "Thomas",
"in_corp": "true",
"ipaddr": "ip address",
"name": "Rispoli, Thomas",
"oid": "encoded Stuff",
"onprem_sid": "encoded Stuff",
"scp": "user_impersonation",
"sub": "encoded Stuff",
"tid": "encoded Stuff",
"unique_name": "thomas.rispoli@cgi.com",
"upn": "thomas.rispoli@cgi.com",
"uti": "encoded Stuff",
"ver": "1.0"
} Then some binary data that I assume is a nounce