- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们希望将 Angular 前端应用程序连接到 Azure AD。我们开始使用以下示例项目对此进行测试:https://blogs.msdn.microsoft.com/premier_developer/2018/10/24/using-adal-js-with-angular4/#
在“app.module.ts”中,我们提供了如下所示的 Azure AD 配置。
{
provide: APP_CONFIG, useValue: {
clientId: '<our-client-id>',
tenantId: '<our-app-id>',
redirectUri: 'http://localhost:4200/frameredirect',
}
}
在 Azure 门户中,我们创建了应用程序注册并配置了重定向 URL 以匹配上述内容。根据https://learn.microsoft.com/en-us/azure/active-directory/develop/access-tokens中提到的信息我们还应该在 Azure 门户中配置应用程序 list ,以便用户组将包含在 token 中。因此,在 Minifest 中,我们将 groupMembershipClaims 设置为 SecurityGroup。现在所有组织组都应包含在 token 中。如果有很多角色,那么我们应该看到一个可以查询组的端点。像这样的东西:
"src1" : { "endpoint" :
"https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects" }
设置完成后,即可登录。但是,用户组根本不包含在访问 token 中。有谁知道我们缺少什么吗?
最佳答案
正如您在评论中提到的,登录用户是 6 个以上组的成员。在这种情况下,您不会返回包含所有组 ID 的 groups
声明,而是 Azure AD 返回一个超额指示器,这是一个提示,让您知道该用户是多个组的成员。 Microsoft Docs
hasgroups 声明
如果 SPA 使用 OAuth 2.0 隐式授权流程,则使用的超额指示器是 hasgroups
声明。其背后的原因是为了确保 URI 片段不会超出 URL 长度限制。因此,如果用户属于最多 5 个组,则长度不是问题,您将获得实际的组 ID。如果有 6 个或更多,您需要使用图 API 进行单独的调用来获取组。
组:src1 声明
groups:src1
声明也是一个超额指示器,但是这个声明提供了有关调用哪个端点来获取组的更多信息。我见过这种说法是在 URL 长度相关限制不适用时出现的,例如例如,如果您使用的是带有 ADAL.NET 库的基于 .NET 的控制台应用程序,而不是基于 Angular 的 SPA。同样,目的是相同的,让您知道用户是许多组的一部分,您需要进行单独的调用来获取该信息。
如何获取用户的群组相关信息?
正如 hasgroups
声明本身提到的,您可以调用 Azure AD Graph API
https://graph.windows.net/{tenantID}/users/{userID}/getMemberObjects
您还可以使用较新的 Microsoft Graph API。这是较新的推荐之一。您可以在此处阅读有关与 Azure AD Graph API 的比较以及何时使用哪个 API 的信息 Microsoft Graph or Azure AD Graph
我发现稳定版本 v1.0 至少有两个 API 可能对您有帮助:
GET /users/{id | userPrincipalName}/memberOf
POST /users/{id | userPrincipalName}/getMemberGroups
此 API 的检查是可传递的,与读取 memberOf 导航属性不同,后者仅返回用户是其直接成员的组。它支持 Office 365 和 Azure AD 中配置的其他类型的组。每个请求可以返回的最大组数为2046
关于Azure AD OpenID 连接 - token 中未显示组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53522103/
我的Angular-Component位于一个flexbox(id =“log”)中。可以显示或隐藏flexbox。 我的组件内部有一个可滚动区域,用于显示日志消息。 (id =“message-li
我真的很困惑 有一个 phpinfo() 输出: MySQL 支持 启用 客户端 API 版本 5.5.40 MYSQL_MODULE_TYPE 外部 phpMyAdmin 显示: 服务器类型:Mar
我正在研究这个 fiddle : http://jsfiddle.net/cED6c/7/我想让按钮文本在单击时发生变化,我尝试使用以下代码: 但是,它不起作用。我应该如何实现这个?任何帮助都会很棒
我应该在“dogs_cats”中保存表“dogs”和“cats”各自的ID,当看到数据时显示狗和猫的名字。 我有这三个表: CREATE TABLE IF NOT EXISTS cats ( id
我有一个字符串返回到我的 View 之一,如下所示: $text = 'Lorem ipsum dolor ' 我正在尝试用 Blade 显示它: {{$text}} 但是,输出是原始字符串而不是渲染
我无法让我的链接(由图像表示,位于页面左侧)真正有效地显示一个 div(包含一个句子,位于中间)/单击链接时隐藏。 这是我的代码: Practice
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
最初我使用 Listview 来显示 oracle 结果,但是最近我不得不切换到 datagridview 来处理比 Listview 允许的更多的结果。然而,自从切换到数据网格后,我得到的结果越来越
我一直在尝试插入一个 Unicode 字符 ∇ 或 ▽,所以它显示在 Apache FOP 生成的 PDF 中。 这是我到目前为止所做的: 根据这个基本帮助 Apache XSL-FO Input,您
我正在使用 node v0.12.7 编写一个 nodeJS 应用程序。 我正在使用 pm2 v0.14.7 运行我的 nodejs 应用程序。 我的应用程序似乎有内存泄漏,因为它从我启动时的大约 1
好的,所以我有一些 jQuery 代码,如果从下拉菜单中选择了带有前缀 Blue 的项目,它会显示一个输入框。 代码: $(function() { $('#text1').hide();
当我试图检查 Chrome 中的 html 元素时,它显示的是 LESS 文件,而 Firefox 显示的是 CSS 文件。 (我正在使用 Bootstrap 框架) 如何在 Chrome 中查看 c
我是 Microsoft Bot Framework 的新手,我正在通过 youtube 视频 https://youtu.be/ynG6Muox81o 学习它并在 Ubuntu 上使用 python
我正在尝试转换从 mssql 生成的文件到 utf-8。当我打开他的输出 mssql在 Windows Server 2003 中使用 notepad++ 将文件识别为 UCS-2LE我使用 file
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
我正在尝试执行单击以打开/关闭一个 div 的功能。 这是基本的,但是,点击只显示 div,当我点击“关闭”时,没有任何反应。 $(".inscricao-email").click(function
假设我有 2 张卡片,屏幕上一次显示一张。我有一个按钮可以用其他卡片替换当前卡片。现在假设卡 1 上有一些数据,卡 2 上有一些数据,我不想破坏它们每个上的数据,或者我不想再次重建它们中的任何一个。
我正在使用 Eloquent Javascript 学习 Javascript。 我在 Firefox 控制台上编写了以下代码,但它返回:“ReferenceError:show() 未定义”为什么?
我正在使用 Symfony2 开发一个 web 项目,我使用 Sonata Admin 作为管理面板,一切正常,但我想要做的是,在 Sonata Admin 的仪表板菜单上,我需要显示隐藏一些菜单取决
我试图显示一个div,具体取决于从下拉列表中选择的内容。例如,如果用户从列表中选择“现金”显示现金div或用户从列表中选择“检查”显示现金div 我整理了样本,但样本不完整,需要接线 http://j
我是一名优秀的程序员,十分优秀!