Azure AD身份验证使用idToken或accessToken失败。我应该使用哪一个?

问题描述 投票:0回答:2

在azure活动目录文档中指出:

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应用程序(单页Web应用程序,并尝试获取对我的REST API的accessToken。

我的目标是将来以这种方式将前端的身份验证流与后端分离开来,将来一些客户端应用程序可以通过accessTokens访问REST API。

[登录时,系统提示我弹出权限弹出窗口,然后在token.idToken.rawIdToken的令牌响应中同时接收到idToken token.accessToken和accessToken msal.aquireTokenSilent(config)

我正在使用通行证,并在passport-azure-ad中使用BearerStrategy来验证accessToken作为中间件。如果我将token.accessToken与授权承载标头一起传递,则会收到authentication failed due to: invalid signature错误。如果我通过了token.idToken.rawIdToken相反,如果我在承载策略配置中设置了authentication failed due to: jwt issuer is invalid,则会收到validateIssuer: true

首先,我想找出要使用的令牌?两者都是有效的jwt令牌(https://jwt.ms/),但它们包含不同的字段。我想到目前为止,idToken听起来似乎很有希望,但是我不确定这是否可行,因为我需要将前端的clientId指定为后端的受众字段,否则会抛出authentication failed due to: jwt audience is invalid。所以这不是去多个客户的方法,对吗?

javascript jwt azure-active-directory passport.js msal
2个回答
1
投票

您可以使用AAD发行的访问令牌来保护自己的自定义Web API。请注意,您必须首先创建一个自定义范围,然后让用户同意该范围。完成此操作后,您的应用程序将获得该范围的令牌(访问令牌是按资源发布的,这意味着您无法使用例如用于MS Graph的令牌来保护自定义Web API。)>

请参阅我的评论here了解更多信息。


0
投票

我们使用ID令牌来检查用户是否已通过身份验证,并获取其帐户详细信息。访问令牌仅用于保护api调用。

© www.soinside.com 2019 - 2024. All rights reserved.