azure - 如何在不使用客户端 ID 和客户端密码的情况下为 webapi 生成 oauth 令牌
问题描述
我已经将一个 webapi 部署到 azure 中。之后,我将我的 API 注册到 Azure AD。
我得到了我的 API 客户端 ID 和客户端密钥,现在我只想测试我的 API,而不是像第三个应用程序那样访问它,所以在这种情况下,资源 ID 是什么。
我已使用 oauth 对该 webapi 进行身份验证。
我想测试那个 webapi 所以进入 POSTMAN 我使用这个 url 来生成 oauth 令牌
我将作为标头Authentication
不记名令牌传递。
第 1 步 - https://login.microsoftonline.com/ {{OAuth_Tenant}}/oauth2/token
在标题中 -
grant_type:client_credentials
client_id:{{client_id}} // i have my API client-id
client_secret:{{client_secret}} // i have my API client-secret
resource:{{resource}} // i have my API client-id
当我使用上述值生成令牌并发送该不记名令牌时,它会在未经授权的情况下失败。
解决方案
您需要在 Azure Active Directory 中注册应用以获取访问令牌。
在那里注册一个应用程序,您可以在那里找到客户端 ID/应用程序 ID。然后您可以为应用程序创建一个密钥,这是您的客户端密码。最后,资源应该是您的 API 在 Azure AD 中的应用注册的客户端 ID 或应用 ID URI。
要根据最佳实践实现这一点,您还需要考虑为 API 定义应用程序权限,以便您可以将权限分配给应用程序以调用您的 API。
推荐阅读
- jestjs - Jest 和 RANDOMBYTESREQUEST 打开句柄
- javascript - 单击该元素时如何使用javascript获取HTML集合中元素的索引
- java - 在 RxJava 中创建一个观察者来执行每个时间间隔的操作
- firebase - Firebase - 禁用默认电子邮件操作 URL
- php - 查询不返回结果
- python - 如何解决python中的这个属性错误?
- swift - 访问和操作 EnvironmentObject 中的数组项
- c# - C#:一些机器抛出以下错误:无法转换类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象
- mysql - MySQL:INNER JOIN 是否比使用 WHERE 子句的连接更优化使用?
- node.js - 在 node-cron 中多次启动完全相同的 node.js 脚本