了解如何构建一个通过 AD FS 2019 进行用户身份验证的本机应用,并使用 MSAL 库 获取令牌以调用 Web API。
Overview
在此流中,将身份验证添加到本机应用(公共客户端),从而让用户登录并调用 Web API。 若要从登录用户的本机应用调用 Web API,可以使用 MSAL 的 AcquireTokenInteractive 令牌获取方法。 为了实现这种交互,MSAL 利用了 Web 浏览器。
为了更好地了解如何在 AD FS 中配置本机应用以交互方式获取访问令牌,让我们 使用此处 提供的示例并演练应用注册和代码配置步骤。
Pre-requisites
- GitHub 客户端工具
- AD FS 2019 或更高版本已配置且正在运行
- Visual Studio 2013 或更高版本
AD FS 中的应用注册
本部分介绍如何将本机应用注册为公共客户端,将 Web API 注册为 AD FS 中的信赖方 (RP)
在“AD FS 管理”中,右键单击“应用程序组”,然后选择“添加应用程序组”。
在应用程序组向导中,对于 名称 输入 NativeAppToWebApi 并在 Client-Server 应用程序 下选择 本机应用程序访问 Web API 模板。 单击 “下一步” 。
复制“客户端标识符”值。 稍后,它将在应用程序的 App.config 文件中用作 ClientId 的值。 为重定向 URI 输入以下内容:https://ToDoListClient. 单击 添加。 单击 “下一步” 。
在“配置 Web API”屏幕上,输入标识符https://localhost:44321/.: 单击 添加。 单击 “下一步” 。 此值稍后将在应用程序的 App.config 和 Web.config 文件中使用。
在“应用访问控制策略”屏幕上,选择“允许所有人”,然后单击“下一步”。
在“配置应用程序权限”屏幕上,确保选中 openid ,然后单击“ 下一步”。
在“摘要”屏幕中,单击“下一步”。
在“完成”屏幕中,单击“关闭”。
在 AD FS 管理中,单击 应用程序组 并选择 NativeAppToWebApi 应用程序组。 右键单击并选择“属性”。
在 NativeAppToWebApi 属性屏幕上,选择“Web API”下的“NativeAppToWebApi - Web API”,然后单击“编辑...”
在“NativeAppToWebApi - Web API 属性”屏幕上,选择“颁发转换规则”选项卡,然后单击“添加规则...”
在“添加转换声明规则”向导上,从“声明规则模板:”下拉列表中选择“转换传入声明”,然后单击“下一步”。
在声明规则名称:字段中输入 NameID。 选择“传入声明类型的名称:”、“传出声明类型的名称 ID:”和“传出名称 ID 格式”的公用名。 单击“ 完成”。
在“NativeAppToWebApi - Web API 属性”屏幕上单击“确定”,然后单击“NativeAppToWebApi 属性”屏幕。
代码配置
本部分介绍如何配置本机应用来登录用户并检索令牌来调用 Web API
从此处下载示例
使用 Visual Studio 打开示例
打开 App.config 文件。 修改以下内容:
ida:Authority - 输入 h
ttps://[your AD FS hostname]/adfsida:ClientId - 在上述 AD FS 部分中的应用注册中输入 #3 中的 客户端标识符 值。
ida:RedirectUri - 在上述 AD FS 部分中的应用注册中输入 #3 的 重定向 URI 值。
todo:TodoListResourceId - 在上述 AD FS 部分中的应用注册中输入 #4 的 标识符 值
ida:todo:TodoListBaseAddress - 在上面的 AD FS 部分中的应用注册中输入 #4 的 标识符 值。
打开 Web.config 文件。 修改以下内容:
ida:Audience - 在上述 AD FS 部分中的应用注册中输入 #4 的 标识符 值
ida: AdfsMetadataEndpoint - 输入
https://[your AD FS hostname]/federationmetadata/2007-06/federationmetadata.xml
测试示例
本部分介绍如何测试上面配置的示例。
代码更改后,重新生成解决方案
在 Visual Studio 上,右键单击解决方案并选择“设置启动项目...”
在“属性”页上,确保将 操作 设置为 启动 以便应用到每个项目。
在 Visual Studio 顶部,单击绿色箭头。
在本机应用的主屏幕上,单击“ 登录”。
如果未看到本机应用屏幕,请从系统上保存项目存储库的文件夹搜索 *msalcache.bin 文件并将其移除。
你将会重定向到 AD FS 登录页面。 继续登录。
登录后,在“创建待办事项”中输入文本“将本机应用生成到 Web API”。 单击“添加项”。 这将调用待办事项列表服务 (Web API),并在缓存中添加项。