Azure api OAuth2 隐式流适用于 http 但不适用于 htt
Posted
技术标签:
【中文标题】Azure api OAuth2 隐式流适用于 http 但不适用于 htt【英文标题】:Azure api OAuth2 implicit flow works on http but not on htt 【发布时间】:2022-01-17 16:31:06 【问题描述】:我在 azure 中创建了一个 Api,最近尝试更改为身份验证方法以通过 OAuth2 访问它。
我使用 https://login.microsoftonline.com/[TENANT]/oauth2/v2.0/token/ 请求了一个令牌,并尝试使用它通过邮递员访问我的 api。
然后我尝试使用收到的令牌向我的 api 发出请求: 我使用 Postman 的 Authorization 窗格将 OAuth2.0 指定为身份验证方法,并将 Grant Type 配置设置为“隐式”并发送请求。
像这样配置,请求使用我的 api 的“http”版本进行,但一旦我尝试使用“https”版本,我就会收到 401 错误“未经授权”。
我的 api 是否配置错误?还是我使用了错误的 url 进行身份验证?
非常感谢您的宝贵时间。
【问题讨论】:
可以参考Protect API's using OAuth 2.0 in APIM和Microsoft Azure Cloud service management API fails with 401: Unauthorized error? 您是否检查过上述评论中提到的链接?您得到解决方案或解决方法了吗? 经过数小时的调试,我设法使其工作 1. 在身份提供者的允许令牌受众中添加应用程序 ID 2. 从 api 中删除所有身份验证代码。 (我的 api 的 startup.cs 部分中仍有一些 SharePoint 识别代码存在问题) 很高兴您的问题得到了解决。您可以将此作为答案发布并接受它,以便对可能面临类似问题的其他社区成员有所帮助。 【参考方案1】:经过大量研究,我发现了问题所在:
我必须在身份提供者的允许令牌受众中添加应用程序 ID(在 azure 应用服务中,导航到身份验证 > 找到身份提供者 > 点击编辑 > 在页面底部添加您的应用注册的应用程序ID。为了更好地衡量,我还添加了 api://[APPLICATION ID]/.default 和 api://[APPLICATION ID]
我的 api 的源代码中还剩下一些身份验证代码。当我尝试连接时,有时会收到一个响应,其中包含标题为“登录到您的帐户”的 html。这是由我的 api 的 startup.cs 文件中的一段代码引起的,它验证了对我的 Azure AAD 发出请求的用户。删除后我不再有错误
【讨论】:
以上是关于Azure api OAuth2 隐式流适用于 http 但不适用于 htt的主要内容,如果未能解决你的问题,请参考以下文章
Instagram API:范围是不是适用于 OAuth2 隐式身份验证流程?