使用Azure AD B2C ADB2C使用个人用户帐户登录到ASP.NET核心Web应用程序-&>API [英] Sign in to ASP.Net Core Web Application -> API with Individual User Accounts using Azure AD B2C ADB2C

查看:34
本文介绍了使用Azure AD B2C ADB2C使用个人用户帐户登录到ASP.NET核心Web应用程序-&>API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已使用ASP.NET Razor页设置了Web应用程序,其中->单个用户帐户->连接到云中的现有用户存储(Azure AD B2C)。

这工作得非常好,我可以同时注册和登录Web应用程序。

但是,当我按照API指南操作时,我不知道如何登录。

示例Controller/weatherForecast仅在Web应用程序启动时返回HTTP 401。

查看文件结构,我也找不到任何线索,但我想这可能类似于脚手架。

https://stackoverflow.com/a/50677133/3850405

如果我从WeatherForecastController中注释掉[Authorize],我会得到HTTP 200,因此我需要的可能只是来自Azure AD B2C的令牌,该令牌正在GET请求中发送到控制器。

我知道B2C租户和应用程序是工作的,因为我对API使用的应用程序与对Web应用程序使用的应用程序相同。它是使用微软自己的指南设置的:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-create-tenant

推荐答案

更新2020-07-27:

应用程序现在是旧式应用程序,应该改用应用程序注册。请参阅本指南:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tutorial-register-applications?tabs=app-reg-ga#register-a-web-application

旧:

使用以下指南修复了该问题:

https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview https://docs.microsoft.com/en-us/azure/active-directory-b2c/access-tokens

我在多次收到错误"AADB2C90205: This application does not have sufficient permissions against this web resource to perform the operation.时遇到了一些问题。原来我没有为应用程序声明正确的作用域。

因此,第一步是确保您的Azure AD B2C应用程序在Published scopes下有一个读取范围:

然后在API access下添加您的应用程序,并读取作用域。

然后使用此格式执行GET请求,最简单的测试方式是在Chrome或任何其他浏览器中使用它:

https://<tenant-name>.b2clogin.com/tfp/<tenant-name>.onmicrosoft.com/<policy-name>/oauth2/v2.0/authorize?
client_id=<application-ID>
&nonce=anyRandomValue
&redirect_uri=https://jwt.ms
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&response_type=code

确保您的应用程序的redirect_uri显示为Reply URL

根据redirect_uri的不同,这应该会给出类似于https://jwt.ms/?code=...https//localhost:44376/signin-oidc?code=登录后的结果。Microsoft示例使用https://jwt.ms,但我更喜欢将代码保留在我控制的域上。

从code参数复制值,然后执行POST请求,我使用Postman。

POST <tenant-name>.onmicrosoft.com/oauth2/v2.0/token?p=<policy-name> HTTP/1.1
Host: <tenant-name>.b2clogin.com
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code
&client_id=<application-ID>
&scope=https://<tenant-name>.onmicrosoft.com/api/read
&code=eyJraWQiOiJjcGltY29yZV8wOTI1MjAxNSIsInZlciI6IjEuMC...
&redirect_uri=https://jwt.ms
&client_secret=<app-key>

client_secret来自密钥:

正确的响应应如下所示:

然后您可以复制access_token的值,并使用Bearer Authorization访问您的本地API。要查看access_token的内容,可以将值复制到https://jwt.ms/

这篇关于使用Azure AD B2C ADB2C使用个人用户帐户登录到ASP.NET核心Web应用程序-&>API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆