《Windows Azure Platform 系列文章目录》
在Azure Active Directory (Azure AD)的上下文中,应用程序的概念可能会被误解。在这里简单介绍Azure AD应用程序集成的概念和具体方面,并举例说明了多租户应用程序的注册和集成。
概述:
与Azure AD集成的应用程序所具有的含义超出了软件方面。 “应用程序”经常用作概念性术语,不仅指应用程序软件,还指其Azure AD注册以及在运行时在身份验证/授权“对话”中的角色。
根据定义,应用程序具有以下功能:
1.客户端角色 (消耗资源)
2.资源服务器角色 (向客户端公开API)
3.客户端角色和资源服务器角色
OAuth 2.0授权授予流定义了会话协议,该协议允许客户端/资源分别访问/保护资源的数据
在以下内容中,我们将看到Azure AD应用程序模型如何在设计时和运行时表示应用程序
应用注册
我们在Azure AD中注册一个应用程序,我们会创建2个对象
1.一个应用程序对象
2.一个服务主体对象
应用程序对象
Azure AD应用程序由其唯一的应用程序对象定义,该对象位于应用程序注册所在的Azure AD租户中,称为应用程序的“主”租户。 Microsoft Graph Application实体为应用程序对象的属性定义架构。
服务主体对象
若要访问由Azure AD租户保护的资源,必须由安全主体代表需要访问的实体。对于用户(用户主体)和应用程序(服务主体)都是如此。
安全主体定义Azure AD租户中用户/应用程序的访问策略和权限。这启用了核心功能,例如登录期间对用户/应用程序的身份验证以及资源访问期间的授权。
当一个应用程序被授予访问租户中资源的权限时(注册或同意时),将创建服务主体对象。 Microsoft Graph ServicePrincipal实体为服务主体对象的属性定义架构。
应用程序和服务主体关系
将应用程序对象视为在所有租户中使用的应用程序的全局表示形式,并将服务主体视为在特定租户中使用的本地表示形式。
应用程序对象用作模板,从该模板派生通用属性和默认属性以用于创建相应的服务主体对象。因此,应用程序对象与软件应用程序具有1:1关系,与其对应的服务主体对象具有1:1:1关系。
必须在使用该应用程序的每个租户中创建一个服务主体,使其能够为登录和/或访问由租户保护的资源建立身份。单租户应用程序只有一个服务主体(在其家庭租户中),创建并同意在应用程序注册期间使用。多租户Web应用程序/ API还具有在每个租户中创建的服务主体,来自该租户的用户已同意使用该服务主体。
参考文档:
https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals