方案:调用 Web API 的 Web 应用(服务器应用)
了解如何生成经过 AD FS 2019 身份验证的 Web 应用登录用户,并使用 MSAL 库获取令牌以调用 Web API。
概述
在此流中,将身份验证添加到 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)。
在”AD FS管理”中,右键单击“应用程序组”,然后选择“添加应用程序组” 。
在应用程序组向导中,对于“名称”,输入“WebAppToWebApi”,并在“客户端-服务器应用程序”下选择“访问 Web API 的服务器应用程序”模板。 单击“下一步”。
复制“客户端标识符”值。 该值稍后用作应用程序 Web.config 文件中的 ida:ClientId 的值。 为“重定向 URI:”输入以下内容 - https://localhost:44326. 单击“添加”。 单击“下一步”。
在“配置应用程序凭据”屏幕上,选中“生成共享机密”,并复制该机密。 该机密稍后用作应用程序 Web.config 文件中 ida:ClientSecret 的值。 单击“下一步”。
在“配置 Web API”屏幕上,输入标识符:https://webapi. 单击 添加。 单击“下一步”。 该值稍后用于应用程序 Web.config 文件中的 ida:GraphResourceId。
在“应用访问控制策略”屏幕上,选择“允许所有人”,然后单击“下一步”。
在“配置应用程序权限”屏幕上,确保选中“openid”和“user_impersonation”,然后单击“下一步”。
在“摘要”屏幕中,单击“下一步”。
在“完成”屏幕中,单击“关闭”。
代码配置
本部分介绍如何配置 ASP.NET Web 应用来登录用户并检索令牌以调用 Web API
从此处下载示例
使用 Visual Studio 打开示例
打开 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/adfsida:Resource
- 在 AD FS 中的应用注册部分中输入 #5 中的标识符值。
测试示例
本部分介绍如何测试配置的示例。
一旦代码发生更改,请重新生成解决方案。
在 Visual Studio 顶部,确保选中 Internet Explorer,并单击绿色箭头。
在主页上,单击“登录”。
你将被重定向到 AD FS 登录页。 继续登录。
登录后,单击“访问令牌”。
单击“访问令牌”,通过调用 Web API 获取访问令牌信息。