方案:调用 Web API 的 Web 应用(服务器应用)

了解如何生成经过 AD FS 2019 身份验证的 Web 应用登录用户,并使用 MSAL 库获取令牌以调用 Web API。

在阅读本文之前,应熟悉 AD FS 概念授权代码授予流

概述

调用 Web API 的 Web 应用概述

在此流中,将身份验证添加到 Web 应用(服务器应用),从而让用户登录并调用 Web API。 在 Web 应用中,若要调用 Web API,请使用 MSAL 的 AcquireTokenByAuthorizationCode 令牌获取方法。 使用授权代码流,将获取的令牌存储在令牌缓存中。 这样,控制器可在需要时从缓存中以无提示方式获取令牌。 MSAL 根据需要刷新该令牌。

用于调用 Web API 的 Web 应用:

  • 是机密客户端应用程序。
  • 已将机密(应用程序共享机密、证书或 AD 帐户)注册到 AD FS。 该机密是在调用 AD FS 以获取令牌的过程中传入的。

若要在 AD FS 中注册 Web 应用,并将其配置为获取令牌以调用 Web API,请使用此处提供的示例,并演练应用注册和代码配置步骤。

先决条件

  • GitHub 客户端工具
  • AD FS 2019 或更高版本已配置且正在运行
  • Visual Studio 2013 或更高版本

AD FS 中的应用注册

本部分介绍如何在 AD FS 中将 Web 应用注册为机密客户端,并将 Web API 注册为信赖方 (RP)。

  1. 在”AD FS管理”中,右键单击“应用程序组”,然后选择“添加应用程序组” 。

  2. 在应用程序组向导中,对于“名称”,输入“WebAppToWebApi”,并在“客户端-服务器应用程序”下选择“访问 Web API 的服务器应用程序”模板。 单击“下一步”。

    添加应用程序组向导“欢迎”页的屏幕截图,其中突出显示了“访问 Web API 的服务器应用程序”模板。

  3. 复制“客户端标识符”值。 该值稍后用作应用程序 Web.config 文件中的 ida:ClientId 的值。 为“重定向 URI:”输入以下内容 - https://localhost:44326. 单击“添加”。 单击“下一步”。

    添加应用程序组向导“服务器应用程序”页的屏幕截图,其中显示了正确的客户端标识符和重定向 URI。

  4. 在“配置应用程序凭据”屏幕上,选中“生成共享机密”,并复制该机密。 该机密稍后用作应用程序 Web.config 文件中 ida:ClientSecret 的值。 单击“下一步”。

    添加应用程序组向导“配置应用程序凭据”应用程序页的屏幕截图,其中显示已选中“生成共享机密”选项,并填充了生成的共享机密。

  5. 在“配置 Web API”屏幕上,输入标识符:https://webapi. 单击 添加。 单击“下一步”。 该值稍后用于应用程序 Web.config 文件中的 ida:GraphResourceId

    添加应用程序组向导“配置 Web API”页的屏幕截图,其中显示了正确的标识符。

  6. 在“应用访问控制策略”屏幕上,选择“允许所有人”,然后单击“下一步”。

    添加应用程序组向导“选择访问控制策略”页的屏幕截图,其中突出显示了“允许所有人”选项。

  7. 在“配置应用程序权限”屏幕上,确保选中“openid”和“user_impersonation”,然后单击“下一步”。

    添加应用程序组向导“配置应用程序权限”页的屏幕截图,其中显示已选中“open ID”和“user impersonation”选项。

  8. 在“摘要”屏幕中,单击“下一步”。

  9. 在“完成”屏幕中,单击“关闭”。

代码配置

本部分介绍如何配置 ASP.NET Web 应用来登录用户并检索令牌以调用 Web API

  1. 此处下载示例

  2. 使用 Visual Studio 打开示例

  3. 打开 Web.config 文件。 修改以下内容:

    • ida:ClientId - 在 AD FS 中的应用注册部分中输入 #3 中的客户端标识符值。

    • ida:ClientSecret - 在 AD FS 中的应用注册部分中输入 #4 中的机密值。

    • ida:RedirectUri - 在 AD FS 中的应用注册部分中输入 #3 中的重定向 URI 值。

    • ida:Authority - 输入 https://[你的 AD FS 主机名]/adfs。 例如 https://adfs.contoso.com/adfs

    • ida:Resource - 在 AD FS 中的应用注册部分中输入 #5 中的标识符值。

      Web 配置文件的屏幕截图,其中显示了修改后的值。

测试示例

本部分介绍如何测试配置的示例。

  1. 一旦代码发生更改,请重新生成解决方案。

  2. 在 Visual Studio 顶部,确保选中 Internet Explorer,并单击绿色箭头。

    Visual Studio UI 的屏幕截图,其中调出了“IIS Express (Internet Explorer)”选项。

  3. 在主页上,单击“登录”。

    主页的屏幕截图,其中已调出“登录”选项。

  4. 你将被重定向到 AD FS 登录页。 继续登录。

    “登录”页的屏幕截图。

  5. 登录后,单击“访问令牌”。

    主页的屏幕截图,其中已调出“访问令牌”选项。

  6. 单击“访问令牌”,通过调用 Web API 获取访问令牌信息。

    “访问令牌”页的屏幕截图,其中显示了访问令牌信息。

后续步骤

AD FS OpenID Connect/OAuth 流和应用程序方案