ASP.NET Web 应用集成Azure AD B2C登录接口验证
2019-08-28 11:24:08
1. 项目创建
1.1 安装
下载.NETCORE SDK 进行安装
下载NETCORE RUNTIME进行安装.
下载Runtime & Hosting Bundle进行安装
下载地址:https://dotnet.microsoft.com/download/dotnet-core
微软的安装在windows方面很简单,基本就是一键安装.
1.2 开发工具
VisualStudio 2019
1.3建立项目工程
点击文件创建项目,出现如下图示
选择画红圈部分,接着出现如下图示
2. Azure AD B2C
2.1 创建Azure Active Directory B2C租户
-
登录到 Azure 门户。
-
请确保使用的是包含订阅的目录。 单击顶部菜单中的“目录和订阅筛选器”,然后选择包含订阅的目录 。 此目录不同于将包含 Azure AD B2C 租户的其他目录。
- 在 Azure 门户的左上角,选择“创建资源” 。
- 搜索并选择“Active Directory B2C” ,然后单击“创建” 。
- 选择“新建 Azure AD B2C 租户” ,输入组织名称和初始域名。 选择国家/地区(以后不能更改),然后单击“创建”。
- 初始域名用作租户名称的一部分。 在此示例中,租户名是 contoso0926Tenant.partner.onmschina.cn:
-
在“创建新的 B2C 租户或链接到现有租户”页上,选择“将现有 Azure AD B2C 租户链接到 Azure 订阅” 。
选择已创建的租户,然后选择订阅。
对于资源组 ,请选择“新建”。 输入将包含该租户的资源组名,选择位置,然后单击“创建” 。
- 若要开始使用新租户,请确保使用包含 Azure AD B2C 租户的目录,方法是单击顶部菜单中的“目录和订阅筛选器” ,然后选择包含租户的目录。
- 如果一开始在列表中看不到新的 Azure B2C 租户,请刷新浏览器窗口,然后再次在顶部菜单中选择“目录和订阅筛选器” 。
2.2.1 注册Web应用程序
-
请确保使用包含 Azure AD B2C 租户的目录,方法是单击顶部菜单中的“目录和订阅筛选器”,然后选择包含租户的目录 。
-
选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
-
选择“应用程序”,然后选择“添加” 。
-
输入应用程序的名称。 例如,“webapp1” 。
-
对于“包括 Web 应用/Web API”和“允许隐式流”,请选择“是”。
-
对于“回复 URL”,请输入 Azure AD B2C 要将应用程序请求的任何令牌返回到的终结点 。 例如,可将其设置为在
https://localhost:44316
上本地侦听。 如果尚不知道端口号,可以先输入占位符值,以后再进行更改。出于测试目的(如本教程),可以将其设置为
https://jwt.ms
,以便显示令牌的内容以供检查。 对于本教程,请将回复 URL 设置为https://jwt.ms
。回复 URL 必须以方案
https
开头,并且所有回复 URL 值必须共享一个 DNS 域。 例如,如果应用程序的回复 URL 为https://login.contoso.com
,则可以像此 URLhttps://login.contoso.com/new
一样向其添加。 或者,你可以引用login.contoso.com
的 DNS 子域,例如https://new.login.contoso.com
。 若要将包含login-east.contoso.com
和login-west.contoso.com
的应用程序作为回复 URL,则必须按以下顺序添加这些回复 URL:https://contoso.com
、https://login-east.contoso.com
、https://login-west.contoso.com
。 可以添加后两个回复 URL,因为它们是第一个回复 URL (contoso.com
) 的子域。 -
单击创建。
2.2.2 创建客户端机密
- 在“Azure AD B2C - 应用程序” 页中,选择已创建的应用程序,例如 webapp1 。
- 选择“密钥”,然后选择“生成密钥”。
- 选择“保存”以查看密钥。 记下“应用密钥”值 。 在应用程序的代码中将此值用作应用程序机密。
2.3 创建用户流
2.3.1 创建注册和登录用户流
-
登录到 Azure 门户。
-
请确保使用包含 Azure AD B2C 租户的目录,方法是单击顶部菜单中的“目录和订阅筛选器”,然后选择包含租户的目录 。
-
选择 Azure 门户左上角的“所有服务”,然后搜索并选择“Azure AD B2C” 。
- 在左侧菜单的“策略”下选择“用户流(策略)”,然后选择“新建用户流”。
-
- 在“建议”选项卡上选择“注册和登录”用户流。
- 输入该用户流的名称。 例如 signupsignin1。
- 对于“标识提供者”,请选择“电子邮件注册”。
-
对于“用户属性和声明”,请选择在注册期间要从用户收集并发送的声明和属性。 例如,选择“显示更多”,然后选择“国家/地区”、“显示名称”和“邮政编码”所对应的属性和声明。 单击 “确定” 。
-
- 单击“创建” 以添加用户流。 名称中会自动追加前缀 B2C_1。
2.3.2 创建配置文件编辑用户流
- 在 Azure AD B2C 租户概览页的左侧菜单中,选择“用户流(策略)”,然后选择“新建用户流”。
- 在“建议”选项卡上选择“个人资料编辑”用户流。
- 输入该用户流的名称。 例如 profileediting1。
- 对于“标识提供者” ,请选择“本地帐户登录”。
- 对于“用户属性”,请选择你希望客户能够在其个人资料中编辑的属性。 例如,选择“显示更多”,然后选择“显示名称”和“职务”所对应的属性和声明。 单击 “确定” 。
- 单击“创建” 以添加用户流。 名称中会自动追加前缀 B2C_1。
2.3.3 创建密码重置用户流
- 在左侧菜单中选择“用户流(策略)”,然后选择“新建用户流”。
- 在“建议”选项卡上选择“密码重置”用户流。
- 输入该用户流的名称。 例如 passwordreset1。
- 对于“标识提供者” ,请启用“使用电子邮件地址重置密码”。
- 在“应用程序声明”下单击“显示更多”,并选择你希望在发回到应用程序的授权令牌中返回的声明。 例如,选择“用户的对象 ID”。
- 单击 “确定” 。
- 单击“创建” 以添加用户流。 名称中会自动追加前缀 B2C_1。
3. Azure AD B2C 代码示例
3.1 clone代码到本地
git clone https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnect-aspnetcore-b2c.git
3.2 打开settings.json文件
{ "Authentication": { "AzureAdB2C": { "ClientId": "90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6", "Tenant": "fabrikamb2c.onmicrosoft.com", "SignUpSignInPolicyId": "b2c_1_susi", "ResetPasswordPolicyId": "b2c_1_reset", "EditProfilePolicyId": "b2c_1_edit_profile", "RedirectUri": "http://localhost:5000/signin-oidc", "ClientSecret" : "v0WzLXB(uITV5*Aq", "ApiUrl": "https://fabrikamb2chello.azurewebsites.net/hello", "ApiScopes": "https://fabrikamb2c.onmicrosoft.com/demoapi/demo.read" } } }
将ClientId、Tenant、SignUpSignInPolicyId、ResetPasswordPolicyId、ResetPasswordPolicyId、EditProfilePolicyId、ClientSecret修改为前面创建生成的值。
运行项目。
注意:如果使用中国区Azure ,
更正下jwtBearerOptions.Authority的地址: