访问令牌的“无效签名”错误(Azure Active Directory / msal js)

Pau*_*aul 5 azure-active-directory msal.js

我使用 MSAL JS 来验证用户身份,然后调用 acquireTokenPopup(scopes) 来获取访问令牌。

我正在获取访问令牌,但无法使用它,因为它显示Invalid Signature。(也在 jwt.io 中检查过 - 同样的错误)

在论坛上我发现这是由于 Graph 添加了随机数造成的。解决方案是什么?请帮忙。

以下是代码。

tenantConfig = {
    scopes: ["directory.read.all"]
};
Run Code Online (Sandbox Code Playgroud)

this.clientApplication.acquireTokenSilent(this.tenantConfig.scopes).then( 函数 (accessToken) {

            },
            function (error) {
                console.log(error);
                this.clientApplication
                    .acquireTokenPopup(this.tenantConfig.scopes)
                    .then(
                        function (accessToken) {

                            console.log("access token   " + accessToken);
                        },
                        function (error) {
                            alert(error);
                        }
                    );
            }
        );
Run Code Online (Sandbox Code Playgroud)

Jua*_*jas 8

当使用 MSAL.js 并且不使用图形 api 时,您的范围参数应为“[CLIENT_ID]/.default”:

var requestObj = {
  scopes:["[CLIENT_ID]/.default"]
};
Run Code Online (Sandbox Code Playgroud)

如果您打算使用图形 api,则 scopes 参数会有所不同:

var ResourceId = "https://graph.windows.net/";
var scopes = [ ResourceId + "Directory.Read", ResourceID + "Directory.Write"];
Run Code Online (Sandbox Code Playgroud)

这里的示例https://learn.microsoft.com/en-us/azure/active-directory/develop/tutorial-v2-javascript-spa使用图形 api 并为图形 api 生成特定令牌,如果您需要更改范围参数需要生成用于其他用途的访问令牌。

有关范围参数的更多信息:https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-v1-app-scopes#scopes-to-request-access-to-all-the- v10 应用程序的权限


Ton*_* Ju 1

这没关系。只需将算法改为HS256jwt.io中的,即可验证签名。

在此输入图像描述

访问令牌应该没问题。只需确保您已在 Azure 门户上添加Diretory.Read.All权限并授予管理员同意。

在此输入图像描述'

参考:

使用 msal.js 从 JavaScript 单页应用程序调用 Graph API