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,则可以像此 URL https://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.comhttps://login-east.contoso.comhttps://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的地址:

https://<your-tenant-name>.b2clogin.cn/tfp/<tenant-id-or-tenant-domain>/<user-flow-policies-name>/v2.0/

 

posted @ 2019-08-28 11:24  当走的路甚远  阅读(686)  评论(0编辑  收藏  举报