gpt4 book ai didi

azure-active-directory - ADAL.js - 使用 id_token 获取 Microsoft Graph 访问 token

转载 作者:行者123 更新时间:2023-12-04 00:16:24 25 4
gpt4 key购买 nike

我正在尝试将 Azure AD 登录和 Graph API 集成到我的 angular2 网站中。

我已经成功实现了 ADAL 登录和重定向,围绕有用的博客文章 here 构建。

从中我检索到我的 adalservice 可以访问的 id_token 参数。目前,这是通过一个简单的 context.login() 来实现的。并在重定向中捕获 token 。

当我使用此 token 尝试访问 Microsoft Graph 时,我收到 InvalidAuthenticationToken回复说明 Access Token validation failure .

API call with obtained "access_token"

我是新手,所以可能是我的调用本质上是错误的,或者我在 AD 中缺少某些权限,或者我的应用程序注册表缺少权限。我已经看到我可能需要请求具有足够范围的访问 token ,但我可以找到任何示例。

有没有人使用这个 adalService 库来获取用于 Graph API 的 token ?

最佳答案

只是为了让所有人都清楚,在这里再次更新端到端解决方案。

如果您没有基本入门代码,请参阅此链接 Adal-JS Tutorial .这篇文章只涉及所涉及的定制。

步骤 1:配置 AdalService

(仅显示新代码,其他方法保持不变)

export class AdalService {

public get graphAccessToken() {
return sessionStorage[new AppConstants().User_Graph_Token];
}

public retrieveTokenForGraphAPI() {
this.context.acquireToken('https://graph.microsoft.com', function (error, graph_token) {

if (error || !graph_token) {
console.log('ADAL error occurred: ' + error);
} else {
// Store token in sessionStorage
sessionStorage[new AppConstants().User_Graph_Token] = graph_token;
return;
}
}.bind(this)
);
}
}

代码应该有 id_token 回调的现有处理程序和路由中的相应配置。如果没有,请参阅上面的链接以获取初始代码。

现在要求是在检索到 id_token 后检索 access_token。 access_token 有“puid”的附加字段,它描述了声明的标识符。这将是第 2 步。

第 2 步:更新 LoginComponent
ngOnInit() {
if (!this.adalService.isAuthenticated) {
console.log('LoginComponent::Attempting login via adalService');
this.adalService.login();
} else {
if (this.adalService.accessTokenForGraph == null) {
console.log('LoginComponent::Login valid, attempting graph token retrieval');
this.adalService.retrieveTokenForGraphAPI();
}
}

现在 token 被检索并存储以供以后使用。

第 3 步:为“access_token”回调更新路由

与 'id_token' 回调类似,我们需要为 access_token 添加额外的回调路由。回调组件将保持不变。他们的代码如主链接中所述。请注意,*access_token"端点是 MS 提供的,因此请注意不要更改名称。
  { path: 'access_token', component:  OAuthCallbackComponent, canActivate: [OAuthCallbackHandler] },
{ path: 'id_token', component: OAuthCallbackComponent, canActivate: [OAuthCallbackHandler] }

第 4 步:在需要的地方使用 token
const bearer = this.adalService.graphAccessToken();

关于azure-active-directory - ADAL.js - 使用 id_token 获取 Microsoft Graph 访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44802838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com