好的,我已经花了两天的时间来解决这个错误,并找到了一个解决方案。在我的搜索中,我没有找到一个单一的答案来解决我所面临的问题(相反,我找到了多个最终指向解决方案的答案)。因此,我尝试向您解释“访问令牌验证失败。无效访问群体”错误的解决方案:
TLDR:
/**
* Retrieve token for backend
*/
export const getToken = async (account): Promise<AuthenticationResult> => {
return await msalInstance.acquireTokenSilent({
scopes: [process.env.REACT_APP_API_SCOPE as string],
redirectUri: current_url,
account,
});
};
/**
* Retrieve token for Microsoft Graph API:
*/
export const getTokenForGraphApi = async (
account
): Promise<AuthenticationResult> => {
return await msalInstance.acquireTokenSilent({
scopes: ["https://graph.microsoft.com/User.Read"],
redirectUri: current_url,
account,
});
};
我已经让我的组织的管理员设置了Azure门户,以便我们的应用程序注册具有API权限:
在React中,当我进行身份验证时,我使用了作用域:
scopes: [
process.env.REACT_APP_API_SCOPE as string,
"User.Read",
],
然后,我尝试使用“https://graph.microsoft.com”在user.read作用域之前进行操作,所以它应该是:
scopes: [
process.env.REACT_APP_API_SCOPE as string,
"https://graph.microsoft.com/User.Read"
],
但未能通过错误消息进行身份验证:
“AADSTS28000:为输入参数scope提供的值无效,因为它包含多个资源。scope api://{API-application-id}/a-scope https://graph.microsoft.com/user。读取openid配置文件无效。”
/**
* Retrieve token for backend
*/
export const getToken = async (account): Promise<AuthenticationResult> => {
return await msalInstance.acquireTokenSilent({
scopes: [process.env.REACT_APP_API_SCOPE as string],
redirectUri: current_url,
account,
});
};
/**
* Retrieve token for Microsoft Graph API:
*/
export const getTokenForGraphApi = async (
account
): Promise<AuthenticationResult> => {
return await msalInstance.acquireTokenSilent({
scopes: ["https://graph.microsoft.com/User.Read"],
redirectUri: current_url,
account,
});
};
错误消息:“access token validation Failure.Invalid Audiator”告诉您,在Microsoft Graph API中使用的访问令牌上的“AUD”(Audiator)设置不正确。
通过粘贴访问令牌,可以使用https://jwt.ms/检查令牌。(Microsoft支持站点jwt.ms站点:https://docs.Microsoft.com/en-us/azure/active-directory/developer/access-tokens)
因此,解决方案需要两个独立的访问令牌:一个范围为“https://graph.Microsoft.com/user.read”,您可以与Microsoft graph api一起使用,另一个用于后端的访问令牌:
/**
* Retrieve token for backend
*/
export const getToken = async (account): Promise<AuthenticationResult> => {
return await msalInstance.acquireTokenSilent({
scopes: [process.env.REACT_APP_API_SCOPE as string],
redirectUri: current_url,
account,
});
};
/**
* Retrieve token for Microsoft Graph API:
*/
export const getTokenForGraphApi = async (
account
): Promise<AuthenticationResult> => {
return await msalInstance.acquireTokenSilent({
scopes: ["https://graph.microsoft.com/User.Read"],
redirectUri: current_url,
account,
});
};
我正在尝试使用Graph API从Angular应用程序发送邮件。 下面是代码 但当我发送邮件时,我会收到以下错误。 我使用参考资料中的作用域:['mail.send'],但仍然会出现此错误。此外,我仅使用来自this.msalService.AcquireTokenSilent(资源)的accessToken。
在错误=我正在获取“消息”的上下文中需要帮助:“Access token validation Failure.Invalid Pavior.”, 我正在使用OAuth中的授权代码授予类型。我已经使用Azure广告策略将自定义声明映射到应用程序。因此,如果用户Scope=appid/.default,那么我将在令牌中获得一个自定义声明,并在Azure AD上对应用程序具有API权限,如user.r
null null “AADSTS28000:为输入参数scope提供的值无效,因为它包含多个资源。scope api://{API-application-id}/a-scope https://graph.microsoft.com/user。Read openid配置文件无效。” 这里,我们的后端是一个资源,它有一个作用域,“https://graph.microsoft.com”是另一个作
当且仅当用户在发出OAuth2请求时登录到LinkedIn时,它才起作用。 如果用户未登录,则会遇到错误。 我们的行动顺序: 成功获取新的访问令牌 使用访问令牌,发布到apiendpoint 之后,我们将收到一份401,内容如下: 有时,经过一段时间后,使用相同的访问令牌重试会得到200。有时不会。 如果用户在“401期间”登录LinkedIn,那么之前获取的访问令牌就会神奇地开始工作。 我不知道
我在谷歌上搜索了很多关于这个问题的信息,但没有任何帮助。我也看到过许多类似的帖子,但没有什么用处。 我正在使用MS Graph API V2访问用户电子邮件、日历和联系人数据。 授权URL: https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=ABC 令牌请求URL: https://login.micr
我感到困惑的是,在向授权服务器发送授权请求时,似乎没有标准的方法来指定访问令牌的受众。 OAuth2将访问令牌指定为不透明字符串;规范中只有一处提到了“观众”,即访问令牌可以是“观众限制的”。许多最近的授权服务器实现似乎产生了JWT访问令牌,JWT指定了受众(aud)声明。 据我所知:-Auth0使用“audience”参数-Connect2id使用“resource”参数-Identity Se