Chinese, Simplified
category
作为开发人员,本文帮助您了解如何在获取应用程序的资源访问权限时最好地确保零信任。要访问受保护的资源,如电子邮件或日历数据,您的应用程序需要资源所有者的授权。资源所有者可以同意或拒绝应用程序的请求。当资源所有者同意时,您的应用程序会收到访问令牌;当资源所有者拒绝访问时,您的应用程序不会收到访问令牌。
概念审查
您可以使用Microsoft身份平台对您的应用程序进行身份验证和授权,并管理权限和同意。让我们从一些概念开始:
- 身份验证(有时简称为AuthN)是证明您声称的身份准确的过程。Microsoft身份平台使用OpenID Connect协议来处理身份验证。授权(有时缩写为AuthZ)授予经过身份验证的一方做某事的权限。它指定了经过身份验证的一方可以访问哪些数据。Microsoft身份平台使用OAuth2.0协议来处理授权。授权选项包括访问控制列表(ACL)、基于角色的访问控制(RBAC)和属性访问控制(ABAC)。身份验证通常是授权的一个因素。
- 委托访问(代表登录用户)或直接访问(仅作为应用程序自己的身份)允许您的应用程序访问数据。委托访问需要委托权限(也称为范围);客户端和用户必须分别获得授权才能发出请求。直接访问可能需要应用程序权限(也称为应用程序角色);当应用程序角色被授予应用程序时,它们可以被称为应用程序权限。
- 委托权限与委托访问一起使用,允许应用程序代表用户行事,只访问用户可以访问的内容。应用程序权限与直接访问一起使用,允许应用程序访问与该权限相关联的任何数据。只有服务主体的管理员和所有者可以同意应用程序权限。
- 同意是应用程序接收权限的方式。用户或管理员授权应用程序访问受保护的资源。同意提示列出了应用程序所需的权限以及发布者信息。
- 预授权【Preauthorization 】是资源应用程序所有者授予客户端应用程序访问权限的方式。他们可以在Azure门户中或通过使用PowerShell和Microsoft Graph等API来实现。他们可以授予资源权限,而不需要用户看到预授权权限集的同意提示。
委托权限和应用程序权限之间的区别
应用程序以两种模式工作:当用户存在时(委派权限)和当没有用户时(应用程序权限)。当应用程序前面有用户时,您必须代表该用户行事;您不应该代表应用程序本身行事。当用户指导您的应用程序时,您将作为该用户的代理人。您将获得代表令牌标识的用户行事的权限。
服务类型的应用程序(后台任务、守护进程、服务器到服务器进程)没有可以识别自己或键入密码的用户。它们需要应用程序权限才能代表自己(代表服务应用程序)行事。
零信任应用程序授权最佳实践
当您连接到应用程序中的用户和您正在调用的资源时,您的授权方法将身份验证作为一个组件。当您的应用程序代表用户行事时,我们不信任调用应用程序告诉我们用户是谁,也不信任应用程序决定用户是谁。Microsoft Entra ID会验证并直接在令牌中提供有关用户的信息。
当您需要允许应用程序调用API或授权应用程序以便应用程序可以访问资源时,现代授权方案可能需要通过权限和同意框架进行授权。请参考应用程序属性的安全性最佳实践,其中包括重定向URI、访问令牌(用于隐式流)、证书和机密、应用程序ID URI以及应用程序所有权。
下一步
- 自定义令牌描述了您可以在Microsoft Entra令牌中接收的信息。它解释了如何定制令牌以提高灵活性和控制力,同时以最小的权限提高应用程序的零信任安全性。
- 在令牌中配置组声明和应用程序角色向您展示了如何使用应用程序角色定义配置应用程序,以及如何为应用程序角色分配安全组。这些方法有助于提高灵活性和控制能力,同时以最小的权限提高应用程序的零信任安全性。
- 制定委托权限策略有助于您在应用程序中实施管理权限的最佳方法,并使用零信任原则进行开发。
- 制定应用程序权限策略可以帮助您决定凭据管理的应用程序权限方法。
- 在没有用户的情况下提供应用程序身份凭据。这解释了为什么Azure资源的托管身份【Managed Identities】是Azure上服务(非用户应用程序)的最佳客户端凭据实践。
- 授权最佳实践可帮助您为应用程序实现最佳授权、权限和同意模型。
- 在应用程序开发生命周期中使用零信任身份和访问管理开发最佳实践来创建安全的应用程序。
- 使用零信任身份方法构建应用程序继续阅读零信任身份和访问管理开发最佳实践文章,以帮助您在软件开发生命周期(SDLC)中使用零信任方法进行身份识别。
- 登录 发表评论
- 19 次浏览
发布日期
星期四, 七月 25, 2024 - 14:38
最后修改
星期四, 七月 25, 2024 - 14:38
Article
最新内容
- 10 hours ago
- 12 hours ago
- 12 hours 34 minutes ago
- 3 days 3 hours ago
- 3 days 11 hours ago
- 3 days 11 hours ago
- 3 days 12 hours ago
- 3 days 12 hours ago
- 1 week ago
- 1 week ago