首页 > 解决方案 > 如何在不使用客户端 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

当我使用上述值生成令牌并发送该不记名令牌时,它会在未经授权的情况下失败。

标签: azureasp.net-web-apioauthazure-active-directory

解决方案


您需要在 Azure Active Directory 中注册应用以获取访问令牌。

在那里注册一个应用程序,您可以在那里找到客户端 ID/应用程序 ID。然后您可以为应用程序创建一个密钥,这是您的客户端密码。最后,资源应该是您的 API 在 Azure AD 中的应用注册的客户端 ID 或应用 ID URI。

要根据最佳实践实现这一点,您还需要考虑为 API 定义应用程序权限,以便您可以将权限分配给应用程序以调用您的 API。


推荐阅读