场景:调用 Web API 的本机应用
了解如何生成一个本机应用,该应用使经过 AD FS 2019 进行身份验证的用户登录,并使用 MSAL 库获取令牌来调用 Web API。
概述
在此流中,将身份验证添加到本机应用(公共客户端),从而让用户登录并调用 Web API。 若要从让用户登录的本机应用调用 Web API,可使用 MSAL 的 AcquireTokenInteractive 令牌获取方法。 为了实现这种交互,MSAL 利用了 Web 浏览器。
为了更好地了解如何在 AD FS 中配置本机应用来交互式地获取访问令牌,让我们使用此处提供的示例,并演练应用注册和代码配置步骤。
先决条件
- GitHub 客户端工具
- AD FS 2019 或更高版本已配置且正在运行
- Visual Studio 2013 或更高版本
AD FS 中的应用注册
本部分介绍如何将本机应用注册为公共客户端,将 Web API 注册为 AD FS 中的信赖方 (RP)
在“AD FS 管理”中,右键单击“应用程序组”,然后选择“添加应用程序组”。
在应用程序组向导中,对于“名称”,输入“ebApiToWebApi”,并在“客户端-服务器应用程序”下选择“访问 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]/adfs
ida: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),并在缓存中添加项。