Azure AD v2.0 рассматривает одно из их преимуществ как динамическое согласие (https://github.com/AzureAD/microsoft-authentication-library-for-js/wiki/api-scopes#request-dynamic-scopes-for-incremental-consent).
Как это должно выглядеть? Я думал, что типичным вариантом использования будет предоставление ролей / областей применения к определенной конечной точке. Например, аннотация @OAuthBearer()
на:
@Get("/hello-auth")
@OAuthBearer({"scopes": ["app.special.scope"]})
helloAuth() {
return {text: "Authorised hello"};
}
Я не могу найти информацию о том, как это сделать. Мне кажется (глядя на диаграмму протокола на https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-grant-flow#protocol-diagram), что passport-azure-ad
выполняет только одно действие - получение токена на предъявителя и его проверку. Это имеет смысл, но тогда как оцениваются области действия для аннотации, поскольку они на стороне сервера и, следовательно, клиенту неизвестно, что они включены в токен?
Я спросил это в https://github.com/AzureAD/passport-azure-ad/issues/430, но мой контракт заканчивается на следующей неделе, и я хочу закончить это, поэтому добавьте это в кросс-пост.
Как и в этом посте, я подумал об использовании библиотеки msal.js
, но не понимаю, как бы я это сделал.
Есть ли лучший подход к этой проблеме?