【问题标题】:Securing API with client credentials via Azure AD通过 Azure AD 使用客户端凭据保护 API
【发布时间】:2020-03-25 18:58:50
【问题描述】:

我有一个托管在 Azure 中的 ASP.NET Core API,可供多个受信任的客户端访问。我希望提供一个接受 client_id 和 client_secret 的 /auth 端点。响应将是一个过期的 OAuth 访问令牌。

我发现的许多示例/教程主要与用户名/密码登录和完整的 OAuth 流程 (B2C) 相关,这不是我想要的,因为受信任的客户拥有秘密。

我一直在研究 Azure API 管理,它链接到用于 OAuth 的 Azure AD,但我认为这只是让事情变得复杂。

过去我使用 ASP.NET 中间件生成和验证 JWT 不记名令牌,但我确信我应该通过 Azure AD 生成和验证令牌 - 还是我错了?

[期待因为没有明确与代码相关而获得一些反对票,但确实需要一些建议才能让我通过这个]

【问题讨论】:

  • 也许Azure AD S2S call flow 是您要找的人,不是吗?
  • 谢谢@Sergey - 一定会读到这一点。看起来接近我正在寻找的东西。 :-)

标签: azure api oauth jwt azure-active-directory


【解决方案1】:

我希望提供一个接受 client_id 和 客户秘密。响应将是一个过期的 OAuth 访问令牌。

您可以使用client credential flow。然后您可以使用此端点获取访问令牌。

POST /{tenant}/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials

在执行此操作之前,您需要 expose application permissions 的应用程序 api。 appRoles的内容如下。

"appRoles": [
    {
    "allowedMemberTypes": [ "Application" ],
    "description": "Accesses the TodoListService-Cert as an application.",
    "displayName": "access_as_application",
    "id": "ccf784a6-fd0c-45f2-9c08-2f9d162a0628",
    "isEnabled": true,
    "lang": null,
    "origin": "Application",
    "value": "access_as_application"
    }
],

【讨论】:

  • 您好,您在哪里添加了需要保护的 API?
猜你喜欢
  • 1970-01-01
  • 2020-02-28
  • 2017-03-31
  • 2023-03-10
  • 2019-09-15
  • 2019-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多