移动服务和 Azure Active Directory 中基于角色的访问控制

 编辑人员注释:本文章由 Matthew Henderson撰写

去年 11月,我们发布了 Azure Active Directory (AAD) 预览版作为移动服务身份提供程序。此举旨在为企业开发人员提供简单易用的解决方案,以构建面向员工的移动应用程序。作为起点,使用基本身份验证是一个很好的选择。但在很多情况下,目前的预览版客户需要对各种类型的用户加以区分,以便做出适当的授权决定。基于角色的访问控制 (RBAC) 的思路是为用户可以担任的角色分配权限,从而恰当定义界限来限定某类用户可以执行和不可执行的操作。幸运的是,向 Azure移动服务添加基本 RBAC功能非常简单。本文将为您演示如何实现这一点。
要继续阅读本文后面的内容,您需要注册移动服务预览版以进行 Azure Active Directory集成。如果您想注册,请发送电子邮件至 MobileServices@microsoft.com

背景

假设我想开发一个仅供销售团队使用的应用程序。要访问该应用程序,用户不仅必须是公司目录中的成员,而且要被分配到销售组。下面我们来看看,为了确保只有经过身份验证的销售团队成员才能访问该应用程序,需要在服务器端添加什么逻辑。(如果您刚刚开始在移动服务中使用 Azure Active Directory 身份验证,您会发现该入门教程很有帮助。)

我们将采用的基本方法是利用 Azure AD租户中用户的安全组成员身份。AAD同时具有角色和组的概念,但在今天的方案中,我们使用的是一个已拥有正确用户成员身份的现有组。我们将通过一个已与 Azure AD租户同步的内部部署 AD租户来管理这个组。使用 O365 Windows Intune的客户已经证实,通过设置和内部部署 Active Directory目录的同步,将使您拥有强大功能(您甚至可以使用这些租户构建移动服务)。

今天,我要使用的是密码同步选项,但实际上支持的方案有很多种。事实上,您可以将 AAD 设置为指向 ADFS,以支持大型混合方案。如果要尝试这些选项,可启动运行 Windows Server 2012 R2 Datacenter Azure VM并安装 Active Directory域服务角色,然后按照目录同步说明进行操作。

创建组

您可以看到,我已在自己的目录中创建了一些用户(AliceBobCarol Dave)和一个“Sales”域安全组。Alice Bob已经是该组的成员,但 Carol Dave尚未加入该组,因此应该没有权限访问我的应用程序。其他一切均为默认值。

连接到 Azure移动服务

现在,我已准备好开始构建我的应用程序后端。在 Azure移动服务中,我们希望在已提供的机制之上使用附加的授权逻辑来保护每个脚本和 API。为了进一步增强安全性,我将每个受保护端点的权限设置为“Only Authenticated Users”

我希望所构建的逻辑能够在多个脚本中执行,因此我将代码放在移动服务的Git存储库的共享脚本部分。我将脚本命名为 rbac.js

要确定组成员身份,第一步需要获得对 AADgraph API的访问权限。此博客文章此示例介绍了如何进行此设置。您可从下面的代码段开始:

获得graph访问令牌后,我们需要调用isMemberOfgraph端点。此操作将检查指定的用户是否是某个给定组的成员,包括可传递的成员身份。我们可从所检查的脚本中获取用户 ID -所有表脚本会显式接收用户对象,而您可以通过访问 request.user从自定义 API获得一个用户对象。另外,我们需要获取一个组 ID,该 ID 可以在管理门户中方便地获得。您可以转到 Azure AD租户,打开组选项卡并选择组,然后从 CONFIGURE选项卡中复制 OBJECT ID

为了便于使用,我们使用一个好记的名称从共享脚本中导出该值。

接下来,我们要编写一个函数来包装对 AAD isMemberOf端点的调用。如前所述,我们需要刚才获得的用户 ID (userID)和组 ID (groupID)。请求中还需要包含之前获得的访问令牌。

接下来,我们要稍微简化一下编程模型,只需要移动服务的用户对象(通过它可以获得 objectID)和组 ID即可。然后正确对其进行包装,以获得graph令牌并进行调用。请注意,在实际应用中,您可以选择缓存该令牌,而不必每次都提取。该令牌包含一个到期值,通过它可以判断何时应提取新的令牌。


对于共享脚本,需要做的就是这些。接下来,对于要使用 RBAC保护的每个脚本,我只需添加几行代码,然后在回调中执行脚本的工作即可。下面是表读取操作的一个示例:

总结

大功告成了。我们已成功限制只有部分有需要的员工才可以使用该应用程序。现在,您可以开始构建各种 RBAC 方案。如果您需要将某些用户的客户端 UI与其他用户区别开来,一个简单的实现方法是将成员身份检查公布为自定义 API,您可在用户登录后立即执行此检查。

Azure Active Directory正在利用组支持实现一些很棒的功能,并且很多可以直接在管理门户中完成。AAD高级版用户应深入了解全新的自助服务组管理支持

如果您对企业移动应用程序开发感兴趣,建议同时了解一下全新的移动服务.NET后端预览版。该预览版目前尚未内置 AAD 支持,但是不用担心,我们很快便会提供此项支持。

另外再次提醒,如果您对 AAD预览版感兴趣或者有任何疑问,请发送电子邮件与我们联系:mobileservices@microsoft.com

如果您希望我们介绍一些其他的功能或方案,请将反馈意见提交至我们的uservoice网站。

本文翻译自:

http://blogs.msdn.com/b/windowsazure/archive/2014/03/11/roles-based-access-control-in-mobile-services-and-azure-active-directory.aspx

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值