В документации azure Active Directory указано:
idToken: id_tokens are sent to the client application as part of an OpenID Connect flow. They can be sent along side or instead of an access token, and are used by the client to authenticate the user.
accessToken: Access tokens enable clients to securely call APIs protected by Azure
Я использую msal , чтобы войти в мое приложение vue (одностраничное веб-приложение) и попытаться получить accessToken для моего REST API.
Моя цель состоит в том, чтобы таким образом отделить поток аутентификации внешнего интерфейса от внутреннего интерфейса. в будущем несколько клиентских приложений смогут получить доступ к REST API через accessTokens.
При входе в систему мне предлагается всплывающее окно с разрешением, после чего я получаю idToken token.idToken.rawIdToken
и accessToken token.accessToken
в ответе токена msal.aquireTokenSilent(config)
.
Я использую паспорт и passport- azure -ad с BearerStrategy
для проверки accessToken в качестве промежуточного программного обеспечения. Если я передаю token.accessToken
с заголовком Authorization Bearer, я получаю ошибку authentication failed due to: invalid signature
. Если вместо этого я передам token.idToken.rawIdToken
, я получу authentication failed due to: jwt issuer is invalid
, если я установлю validateIssuer: true
в конфигурации стратегии переноса.
Сначала я хочу выяснить, какой токен будет использоваться? Оба являются действительными токенами jwt (https://jwt.ms/), но они содержат разные поля. Я думаю, на данный момент idToken звучит более многообещающе, но я не уверен, что это путь к go, так как мне нужно было бы указать clientId внешнего интерфейса в качестве поля аудитории в бэкэнде, в противном случае он выдает authentication failed due to: jwt audience is invalid
, Так что это не путь к go для нескольких клиентов, верно?