当我尝试从刷新令牌生成新的访问令牌时,发生此错误“令牌获取错误:服务器错误:invalid_client:700025-[2023 - 06 - 15 04:02:04Z]:AADSTS700025:客户端是公共的,因此不应显示'client_assertion'和'client_secret'。
if(createEventResponse === undefined){
console.log("token-expired")
// const accessToken = await req.app.locals.msalClient.refreshToken(refreshToken);
// console.log(accessToken)
const scopes = ["https://graph.microsoft.com/user.read"];
const pca = new ConfidentialClientApplication(msalConfig);
pca.acquireTokenByRefreshToken({
refreshToken: refreshToken,
scopes: scopes,
})
.then((response:any) => {
// New access token acquisition successful
console.log(response)
const newAccessToken = response.accessToken;
console.log('New Access token:', newAccessToken);
// Use the new access token for further operations
// ...
})
.catch((error) => {
// Token acquisition failed
console.error('Token acquisition error:', error);
});
/* const accessToken = await msalClient.acquireTokenSilent(scopes, refreshToken);
console.log("new access token");
console.log(accessToken);
const retryCreateEventResponse = await createOutlookEventService(accessToken, formData, "Pacific Standard Time");
console.log(retryCreateEventResponse) */
}
1条答案
按热度按时间o75abkj41#
我创建了一个Azure AD应用程序并授予API权限,如下所示:
现在我尝试通过Postman生成访问令牌,参数如下:
我得到了相同的错误如下所示:
错误"*AADSTS700025:客户端是公共的,因此不应显示“client_assertion”和“client_secret”*”,如果Azure AD应用程序配置为公共客户端,并且您在生成令牌时尝试传递Client Secret,则通常会发生此情况。
检查应用程序是否为公共客户端,如下所示:
*如果不是,则将应用程序配置为Web/SPA并将
Enable the following mobile and desktop flows
设置为否,然后传递Client Secret以生成令牌。在不传递Azure AD公共客户端应用程序的客户端密码的情况下,我能够成功生成访问和刷新令牌,如下所示: