应用系统Azure AD认证
应用系统与员工账户认证绑定(AD),实现基于Azure AD的Multi-Factor Authentication(MFA)。
1 基于OAuth 2.0的定制开发SDK、文档及示例
1.1 Azure应用程序注册
与 Azure Active Directory (Azure AD) 集成的应用程序,针对其服务提供安全的登录和授权。若要将某个应用程序或服务与 Azure AD 进行集成,开发人员必须先将该应用程序注册到 Azure AD。
- 登录到Azure 门户。
- 在左侧导航窗格中,依次单击“Azure Active Directory”服务、“应用注册”、“新建应用程序注册”
出现“创建”页后,请输入应用程序的注册信息:
a) 输入一个有意义的应用程序名称
b) 程序类型:
为安装在设备本地的客户端应用程序选择“本机”。 此设置用于 OAuth 公共本机客户端。
为WEB应用程序和API 应用程序选择“Web 应用/API”。 此设置用于 OAuth 机密性 Web 客户端和公共的基于用户代理的客户端。 相同的应用程序还可以公开客户端和资源/API。(大部分情况选择此选项)
c) 登录 URL:
对于“Web 应用/API”应用程序,请提供应用的基 URL。 例如,http://localhost:31544 可以是本地计算机上运行的 Web 应用的 URL。 用户将使用此 URL 登录到 Web 客户端应用程序。
d) 重定向 URI:
对于“本机”应用程序,请提供 Azure AD 返回令牌响应时所用的 URI。 输入特定于应用程序的值,例如 http://MyFirstAADApp
- 完成后,单击“创建”。 Azure AD 会将唯一的应用程序 ID 分配给应用程序,同时你会转到应用程序的注册主页。 根据应用程序是Web 应用程序还是本机应用程序,会提供不同的选项用于将更多功能添加到应用程序。
- 修改权限
在“设置”页上,选择“所需权限”,然后选择“添加”。
例如选择“Microsoft Graph”作为 API,并在“委派权限”下添加“以已登录用户的身份访问目录”权限。 这样,应用程序便可以在图形 API 中查询用户。
- 密钥
在应用程序注册门户中为应用程序创建的应用程序机密。 其不应用于本机应用程序,因为设备无法可靠地存储 client_secrets。 Web 应用和 Web API 都需要应用程序机密,能够将 client_secret 安全地存储在服务器端。
1.2 Web 应用程序和AAD的集成
• Web应用的配置
集成AAD的代码(示范代码可以从以下url下载 https://github.com/Azure-Samples/active-directory-java-webapp-openidconnect//archive/complete.zip)使用了Java 库 ADAL4J,这个库用来实现发送SignIn/SignOut的request,管理用户 session,获取用户信息,源代码可以https://github.com/AzureAD/azure-activedirectory-library-for-java获取。
在这个示范代码里所需的改动如下:
在\src\main\webapp\WEB-INF\web.xml里修改authority(必须如下图所示),tenant (上文提到的tenant id),client_id(上文提到的应用程序ID),secret_key(上文创建的秘钥值)的值 。