【发布时间】:2018-11-13 22:14:29
【问题描述】:
我在 Azure AD 中注册了一个应用程序。
如何在不使用 JavaScript 中的 AdalJS 库的情况下以编程方式获取访问令牌?
谢谢!
【问题讨论】:
标签: azure-active-directory access-token sharepoint-online adal adal.js
我在 Azure AD 中注册了一个应用程序。
如何在不使用 JavaScript 中的 AdalJS 库的情况下以编程方式获取访问令牌?
谢谢!
【问题讨论】:
标签: azure-active-directory access-token sharepoint-online adal adal.js
您必须手动使用隐式授权流程。 您可以在此处查看一些基本文档:https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-scenarios#single-page-application-spa。
您可以通过重定向用户登录来验证用户身份,例如https://login.microsoftonline.com/yourtenant.onmicrosoft.com/oauth2/authorize?client_id=your-client-id&response_type=id_token&redirect_uri=https%3A%2F%2Flocalhost&nonce=abcdef。
当然,您需要将值替换为相应的值。 并为每个请求生成一个唯一的随机数。
一旦用户回来,您需要从片段中获取id_token 并对其进行解码以获取用户信息。
然后,您可以使用与以前非常相似的 URL 的隐藏 iframe 获取 API 的访问令牌,但这次使用 response_type=token&prompt=none&resource=https%3A%2F%2Fgraph.microsoft.com%2F。
将资源替换为您想要令牌的资源 URI/id。
然后你将不得不监听 iframe 的 URL 变化,并在它成功返回时从其片段中获取访问令牌(或在身份验证失败时解析错误)。
ADAL.JS 对您隐藏了很多这种复杂性,因此我强烈建议您尽可能使用它。
【讨论】:
它对我不起作用,所以我使用 ADAL。我使用 ScriptLink 自定义操作在我的页面上添加了脚本并在那里获取令牌。当 adal 添加带有链接的 iFrame 时,我重定向到那里,它使用哈希 (url) 中的参数将我导航回我的页面,因此我的脚本从 urls 哈希中检索令牌。
【讨论】: