Msal 响应中的访问令牌为空-Azure AD B2C

Access token is null in Msal response-Azure AD B2C

我有一个 SPA Vue.js 应用程序,使用 msal.js 连接 Azure AD B2C 以获取 ID、访问令牌并使用访问令牌进一步调用我的 API(这是一个 .净核心 webApi)。到目前为止,我使用的是内置用户流,现在我必须更改为自定义策略。我认为我无法通过自定义策略获得访问令牌。 msal 响应中的访问令牌为空。

onToken:(ctx,error,response) => ...

我已经在 SPA 和 Azure 中定义了我的默认范围。如果我 运行 Azure AD b2c 中的自定义策略并设置访问令牌并 select jwt.msas 回复 Url,我能够在响应中看到访问令牌。所以我认为自定义策略没有错。所以看起来我需要使用 msal 对 Azure 进行一些额外的调用并获取访问令牌。 我找不到任何好的文档,我已经在 msal 中尝试了 AquireToken,但没有用。 我不确定是否必须将初始 msal 身份验证调用中的响应类型设置为 'code, id-token' 或 'id-token token'?或者怎么做?如果不是,我可以做些什么来获取访问令牌,因为我在前端并使用隐式流。

Response type should be or include token.

simple code 就是您获取访问令牌所需的一切(响应类型令牌是隐式的):

function authCallback(error, response) {
    // Handle redirect response
}

userAgentApplication.handleRedirectCallback(authCallback);

const accessTokenRequest: AuthenticationParameters = {
    scopes: ["{your b2c exposed api scope}"]
}

userAgentApplication.acquireTokenSilent(accessTokenRequest).then(function (accessTokenResponse) {
    // Acquire token silent success
    // Call API with token
    let accessToken = accessTokenResponse.accessToken;
}).catch(function (error) {
    //Acquire token silent failure, and send an interactive request
    console.log(error);
    if (error.errorMessage.indexOf("interaction_required") !== -1) {
        userAgentApplication.acquireTokenRedirect(accessTokenRequest);
    }
});