如何在没有AdalJS的情况下检索访问令牌?

时间:2018-06-04 14:29:37

标签: azure-active-directory access-token sharepoint-online adal adal.js

我在Azure AD中注册了一个应用程序。

如何在不使用JavaScript的AdalJS库的情况下以编程方式访问令牌?

谢谢!

2 个答案:

答案 0 :(得分:0)

您必须手动使用隐式授权流程。 您可以在此处查看一些基本文档: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并对其进行解码以获取用户信息。 然后,您可以获取API的访问令牌,其中隐藏的iframe具有与以前非常相似的URL,但这次使用response_type=token&prompt=none&resource=https%3A%2F%2Fgraph.microsoft.com%2F。 将资源替换为您需要令牌的资源URI / id。 然后,您将必须侦听iframe的URL更改,并在成功返回时从其片段中获取访问令牌(或在身份验证失败的情况下解析错误)。

ADAL.JS隐藏了很多这种复杂性,所以我强烈建议尽可能使用它。

答案 1 :(得分:0)

它对我不起作用,所以我使用ADAL。我使用ScriptLink自定义操作在我的页面上添加了脚本并在那里获取令牌。当adal添加带有链接的iFrame时,我会重定向,然后使用hash(url)中的参数将其导航回我的页面,因此我的脚本会从url hash中检索令牌。