我有一个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令牌令牌”?还是该怎么做?如果没有,我该怎么做才能获得访问令牌,就像我在前端并使用隐式流一样。
答案 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);
}
});