我在Azure AD中注册了一个应用程序。
如何在不使用JavaScript的AdalJS库的情况下以编程方式访问令牌?
谢谢!
答案 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中检索令牌。