问题标签 [adal]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 从 Azure AD for RBAC 检索用户组成员身份
我在 WPF(本机客户端)中创建了一个测试应用程序。该客户端正在通过 ADAL 库向 Azure 进行身份验证,我在登录后成功获取了 Token。我想做的是获取用户所属组的列表,以便我可以使用该组作为访问数据的访问控制。
至今:
使用 Azure 成功设置我的本机客户端,并将其“Windows Azure Active Directory”委托权限授予“读取目录数据”和“启用登录并读取用户配置文件”。
登录后获取令牌
- 读取用户的个人资料信息
- 创建了用户和组的列表,并将它们添加到 Azure AD 中各自的组。
当我尝试使用以下设置查询 Azure GRAPH
GRAPH 查询取自: http: //msdn.microsoft.com/en-us/library/azure/jj126255.aspx 但后来我得到一个未经授权的错误。我登录的用户是 Azure 中的“全局管理员”。完整的错误信息是:
我的主要目标是设置一个应用程序,在其中使用 WPF 客户端根据用户在 AD 中的成员身份访问数据。
adal - 然后它重定向到 /adfs/oauth2/authorize/wia?
我正在 ADFSv3 上执行授权代码授权流程。
当我执行 AcquireToken 时,会启动通常的 html Web 浏览器身份验证提示,但由于某种原因,它会重定向到/adfs/oauth2/authorize/wia?
显示 Windows 集成登录框的以下端点。
问题:
这是 ADFS 在这里提供的某种 ntml/sso 吗?
是否可以摆脱最初的 html 网络浏览器,而直接显示 windows 登录框,它看起来有点像带有 2 个身份验证提示(1 个禁用,1 个启用)的人格分裂。
azure - How to use ADAL.js and enable a secure CORS call to Web API and Azure AD
I have a single page application needs to call a CORS enable web api. Both applications are secured by AAD. I found a sample done by Mat Velloso at https://github.com/matvelloso/AngularJSCORS
I've followed the steps in the readme file, only thing not sure was "remember to use the class ID from the client application you created" in step 2, I used a newly generate GUID. But I'm keep getting: XMLHttpRequest cannot load http://localhost:63918/api/values. The request was redirected to 'https://login.windows.net/devazureadnrw.onmicrosoft.com/wsfed?wa=wsignin1.0…3d0%26id%3dpassive%26ru%3d%252fapi%252fvalues&wct=2015-01-09T11%3a37%3a19Z', which is disallowed for cross-origin requests that require preflight.
Follwing is the Chrome console out:
The CORS pre flight request was made with 200 status code:
I'm stuck since this is the only sample I found. Any suggestions please? Many thanks.
azure - 如何从 azure-active-directory 获取具有特定组声明的令牌
我有一个客户端 .Net 应用程序,它使用 ADAL 访问在 azure 上运行的 Web API 应用程序。
服务器具有验证用户是否属于特定安全组的自定义代码。
问题是我的用户属于太多组,这导致 AAD 根本不包含令牌中的组列表。
因此,我的自定义代码再次调用 AAD Graph API 以验证用户是否属于该组 - 除了客户端为获取身份验证令牌所做的那个之外。
有没有办法告诉 AAD 在组声明中只返回这个特定组(以便 AAD 将其包含在令牌中)?
任何其他会阻止我进行第二次调用的想法(除了我目前没有的缓存)将不胜感激。
ms-office - 将 Azure AD 应用程序集成到 Office 365 应用启动器
我们在基于 Azure AD 的 Web 应用程序中实现了多租户单点登录方案。这里一切都很好,单点登录按预期工作。
在随附的屏幕截图中,您可以看到 Azure AD 中应用程序条目的基本设置。(好吧,你看的不多,这里的一切都变黑了。)
因此,一般来说,我们将 Web 应用程序的登录 url 设置为名为“/Account/SignIn”的特定路径。这是我们通过 OWIN 发起 OpenID Connect 质询的控制器操作。在挑战中,我们还提供了一个重定向 url,因此在用户通过 Azure AD 身份验证后,我们可以将他或她重定向到所需的登录页面。
与此相反,Azure AD 应用程序条目的回复 url 设置为 Web 应用程序的根 url。我们这样做是为了向公众隐藏我们应用程序的复杂性。在此处公开特殊路径时,如果我们的应用程序逻辑发生更改,我们将不得不更新此路径。
通过将应用程序分配给 Azure AD 中的这些用户,我们现在已将 Web 应用程序添加到某些用户的 Office 365 应用程序启动器。不幸的是,应用程序启动器中的应用程序磁贴将用户重定向到我们的 Web 应用程序的根 url(这是 Azure AD 应用程序条目中的回复 url,如上所述),而不是我们经过身份验证的用户的登录页面。我们的 Web 应用程序的根 url 不需要身份验证,因此用户需要在我们的 Web 应用程序中单击“登录”以强制进行单点登录过程。这不是期望的行为......
问题是我们是否真的需要在 Azure AD 应用程序条目中将我们的登录页面作为回复 url 公开?登陆页面路径上的任何更新都会导致回复 url 发生变化。
此外,该应用程序是多租户的。在我们的 Azure 开发人员租户中对应用程序条目进行更改时,这些更改不会影响我们客户租户中的应用程序条目。相反,客户需要撤销对我们应用程序的访问权限,并通过同意请求的权限再次授予访问权限。
这里有哪些最佳实践?谢谢你的帮助。
此致,
达斯汀
javascript - Adal.js 未触发身份验证
我正在尝试将 adal.js 集成到我的应用程序中。下面是我的代码。有人可以让我知道为什么没有触发身份验证。
]);
我的页面网址是链接这个的东西。
http://localhost:8081/test-ui/#/dashboard
这应该会转到 Azure 登录页面,但不会。
angularjs - Angularjs 不使用 Azure Active Directory 进行身份验证
我有一个使用 Azure Active Directory 进行身份验证的 angularjs Web 应用程序。应用程序使用的 Web Api 进行身份验证时没有任何错误。
对于客户端身份验证,我使用 adal.js 和 adal-angular.js。当我尝试访问我的应用程序中的任何页面时,身份验证失败并在控制台中打印以下消息
我已按照本教程进行操作。
有谁知道发生了什么或我该如何调试?
angularjs - CORS 预检请求在 Azure 托管的 Web API 中以 302 重定向响应
设想:
我在 Windows Azure 上分别托管了两个 ASP.NET Web 应用程序,并且都与同一个 Azure Active Directory 租户相关联:
具有 AngularJS SPA 前端和adal.js库的 MVC 应用程序,用于在客户端处理 Azure AD 身份验证。
带有 Microsoft OWIN 中间件的 Web API,用于处理服务器上的 Azure AD 身份验证。
问题:
当 Angular 引导客户端应用程序时,页面在通过 oauth 重定向到正确的身份授权后正确加载,并且 adal.js 库为每个应用程序正确检索和存储不同的令牌(通过检查资源/会话存储选项卡Chrome 开发工具)。但是,当客户端应用程序尝试访问或更新 API 中的任何数据时,CORS 预检请求会响应 302 重定向到身份验证机构,这会导致控制台中出现以下错误:
XMLHttpRequest 无法加载https://webapi.azurewebsites.net/api/items。请求被重定向到' https://login.windows.net/ {authority-guid}/oauth2/authorize?response_type=id_token&redirect_uri=....etc..etc..',这对于跨域请求是不允许的需要预检。
示例标头(匿名):
我做过/尝试过的事
- 确保 Azure AD 租户允许 OAuth2 隐式流,如此处和其他地方所述。
- 确保 API公开访问权限,并且 MVC/SPA使用这些公开的权限注册访问。
- 在 API 的 web.config 中显式添加了一个 OPTIONS 动词处理程序(见下文)。
- 在 API 服务器上使用了各种启用 CORS 的组合,OWIN 本身以及 EnableCorsAttribute(见下文)。
问题
有没有办法让与 Azure AD 租户关联的 Web API 不会在 CORS 预检请求上重定向?我是否缺少 adal.js 库和/或 OWIN 启动代码中的一些初始化设置(见下文)?Azure 门户中是否有允许 OPTIONS 请求通过 OWIN 管道的设置?
相关代码:
adal.js 初始化
OWIN 中间件初始化
WebApiConfig 初始化
API OPTIONS 动词处理程序注册
相关资源
有时,我尝试了以下(以及更多)论坛和博客文章以及 github 示例代码中几乎所有可以想象的组合。
azure-active-directory - 使用 adal4j 注销
我应该如何使用 adal4j 实现注销?目前我在这个库中没有看到任何用于执行此操作的方法。这是我的例子。
javascript - ADAL - SPA 应用程序中的 Angular JS 中使用的 JavaScript,用于调用通过 APIGEE 公开的第三方 API,从而导致 CORS 错误
如http://www.cloudidentity.com/blog/2014/10/28/adal-javascript-and-angularjs-deep-dive中所述,我创建了一个 SPA 并将 Azure AD 用于用户存储和 ADAL-JavaScript 库/与我的 Angular js 代码集成。它成功地完成了身份验证流程,但是当我调用使用 APIGEE 公开的第三方 API 时,我收到以下错误消息:
加载资源失败:服务器响应状态为 502 (Bad Gateway)
XMLHttpRequest 无法加载 http://webapiexposedusingapigee. 请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问源“ http://mywebsite.in ”。响应具有 HTTP 状态代码 502。
当我签入 Fiddler 时,我得到了以下错误字符串。 “faultstring=收到没有允许标头的 405 响应”
并警告为:
跨域请求被阻止:同源策略不允许在 http://test.apigee.net/v1/selectop/myapi 读取远程资源。这可以通过将资源移动到同一域或启用 CORS 来解决。
我在 APIGEE 上添加了以下标题:
对此的任何帮助表示赞赏。
谢谢。