Msal响应-天蓝色AD B2C中的访问令牌为空

时间:2020-05-22 19:32:05

标签: access-token azure-ad-b2c msal

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

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

我已经在SPA和Azure中定义了默认范围。如果我在Azure AD b2c中运行自定义策略并设置访问令牌并选择jwt.msas答复Url,则可以看到访问令牌作为响应。因此,我认为自定义政策没有错。因此,看来我需要使用msal对Azure进行一些额外的调用并获取访问令牌。 我找不到任何好的文档,并且我已经在msal中尝试了AquireToken,但它不起作用。 我不确定是否必须在初始msal身份验证调用中将响应类型设置为“代码,id令牌”或“ id令牌令牌”?还是该怎么做?如果没有,我该怎么做才能获得访问令牌,就像我在前端并使用隐式流一样。

1 个答案:

答案 0 :(得分:0)

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);
    }
});