閱讀英文

共用方式為

可将用户登录的 Web 应用:代码配置

本文介绍了如何为可将用户登录的 Web 应用配置代码。

支持 Web 应用的 Microsoft 库

以下 Microsoft 库用于保护 Web 应用(和 Web API):

语言/框架 项目
GitHub
获取
入门
用户登录 访问 Web API 正式发布 (GA) 或
公共预览版1
.NET MSAL.NET Microsoft.Identity.Client 库无法为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 乔治亚州
.NET Microsoft.IdentityModel Microsoft.IdentityModel 图书馆无法请求用户登录的ID令牌。 2 库无法请求受保护的Web API的访问令牌。 2 乔治亚州
ASP.NET Core Microsoft.Identity.Web Microsoft.Identity.Web 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 乔治亚州
爪哇岛 MSAL4J msal4j 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 乔治亚州
春天 spring-cloud-azure-starter-active-directory spring-cloud-azure-starter-active-directory 教程 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 乔治亚州
Node.js MSAL 节点 msal-node 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 乔治亚州
Python语言 MSAL Python msal 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 乔治亚州
Python语言 身份 身份 快速入门 库可以为用户登录请求 ID令牌。 库可以为受保护的 Web API 请求访问令牌。 --

(1)联机服务通用许可条款适用于公共预览版的库

(2)Microsoft.IdentityModel 库仅验证令牌,它不能请求 ID 或访问令牌。

选择与所需平台对应的选项卡:

本文中的代码片段及以下内容摘自以 MSAL Java 编写的调用 Microsoft Graph 的 Java Web 应用程序示例。

你可能需要参考此示例来了解完整的实现细节。

配置文件

使用 Microsoft 标识平台将用户登录的 Web 应用程序是通过配置文件配置的。 这些文件必须指定以下值:

  • 实例(例如,如果需要在国家云中运行应用)。 不同的选项包括:
    • https://login.partner.microsoftonline.cn/common:中国 Microsoft Entra(由世纪互联运营)
  • 租户 ID 中的受众。 选项根据应用是单租户还是多租户而异。
    • 从 Azure 门户获取的租户 GUID,用于将组织中的用户登录。 也可以使用域名。
    • organizations,让用户使用任何工作或学校帐户登录
    • common,让用户使用任何工作或学校帐户登录
  • 应用程序的客户端 ID,从 Azure 门户中复制

还可能会看到对颁发机构的引用、实例租户 ID 值的串联。

在 Java 中,配置位于 application.properties 文件中的 src/main/resources 下。

aad.clientId=Enter_the_Application_Id_here
aad.authority=https://login.partner.microsoftonline.cn/Enter_the_Tenant_Info_Here/
aad.secretKey=Enter_the_Client_Secret_Here
aad.redirectUriSignin=http://localhost:8080/msal4jsample/secure/aad
aad.redirectUriGraph=http://localhost:8080/msal4jsample/graph/me

在 Azure 门户中,在应用程序的“身份验证”页中注册的回复 URI 需与应用程序定义的 实例相匹配。 即,它们应是 http://localhost:8080/msal4jsample/secure/aadhttp://localhost:8080/msal4jsample/graph/me

初始化代码

初始化代码的差异与平台相关。 对于 ASP.NET Core 和 ASP.NET,用户登录将委托给 OpenID Connect 中间件来完成。 ASP.NET 或 ASP.NET Core 模板会为 Azure AD v1.0 终结点生成 Web 应用程序。 只需进行一些配置就能使这些应用程序适应 Microsoft 标识平台。

该 Java 示例使用 Spring 框架。 应用程序受到保护,因为已实现一个用于截获每个 HTTP 响应的筛选器。 在 Java Web 应用快速入门中,此筛选器是 AuthFilter 中的 src/main/java/com/microsoft/azure/msalwebsample/AuthFilter.java

该筛选器处理 OAuth 2.0 授权代码流,并检查用户是否已完成身份验证(isAuthenticated() 方法)。 如果用户未完成身份验证,它会计算 Microsoft Entra 授权终结点的 URL,并将浏览器重定向到此 URI。

包含授权代码的响应抵达时,它将使用 MSAL Java 获取令牌。 当它最终从令牌终结点收到令牌时(在重定向 URI 上),用户已登录。

有关详细信息,请参阅 doFilter() 中的 方法。

注意

doFilter() 的代码以略微不同的顺序编写,但流与上述相同。

有关此方法触发的授权代码流的详细信息,请参阅 Microsoft 标识平台和 OAuth 2.0 授权代码流

下一步