【问题标题】:Azure AD authentication for node.js REST endpoint with Service Principal and Secret具有服务主体和机密的 node.js REST 端点的 Azure AD 身份验证
【发布时间】:2019-07-29 09:30:28
【问题描述】:

我正在尝试调用受 AzureAD 身份验证保护的 REST API。从 Postman REST 客户端它的工作方式类似于, https://example.com/getexample 标头:授权:承载。如果我以交互方式获取用户的令牌(例如 device_code 或 MFA),这将非常有用。

由于我想以非交互方式运行代码,我正在尝试通过服务主体对 REST 端点进行身份验证。

REST 服务器内置在带有 azure-passport node.js 包的 nodejs 中。

我已经创建了服务主体(本机应用程序)和相同的秘密。我能够从这个包以及下面的 curl 命令中获取 access_token

curl -X POST -d 'grant_type=client_credentials&client_id=[client id]&client_secret=[client secret]&resource=[client id of the server]' https://login.microsoftonline.com/[tenant]/oauth2/token

但如果我将此生成的令牌传递给 REST 端点,我会得到 401。

请帮助如何使用服务主体和密钥对自定义 REST 端点进行身份验证。

以下是我为服务主体(服务器和客户端)所做的配置细节

服务器 SP(node.js 应用程序) 创建服务主体,添加 User.Read API 权限。管理员授予 API 权限。 在“公开 API”下创建了一个自定义范围(API.Access)并选择了“管理员和用户”可以授予。 在 node.js 应用程序中,我只使用 user.read 范围

客户端 SP(邮递员) 创建服务主体,在 API 权限下添加服务器 SP(客户范围) 使用 curl 命令获取访问令牌而不传递任何范围。

【问题讨论】:

  • 您是否已将 Web api 权限授予您的客户端应用程序?
  • 我更新了问题,提供了有关服务主体配置的更多详细信息
  • 我在范围方面出了点问题。我需要在 node.js 应用程序中添加自定义范围吗?并在使用 CURL 请求访问令牌时? @CaiyiJu 请帮忙
  • 我今天试试,在这里更新。
  • 我正在等待我的管理员授予权限 :)。抓住 Azure 管理员并不容易。

标签: node.js azure rest azure-active-directory


【解决方案1】:

要以非交互方式运行代码,您用来获取访问令牌的方式是需要应用程序权限的客户端凭据流。 Here是委托权限和应用权限的区别。

您可以通过编辑服务器应用的清单来define the application permission

"appRoles": [
        {
            "allowedMemberTypes": [
                "Application"
            ],
            "description": "Apps that have this role have the ability to invoke my API",
            "displayName": "Can invoke my API",
            "id": "fc803414-3c61-4ebc-a5e5-cd1675c14bbb",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "value": "myTestRole"
        }
    ]

然后您的客户端应用程序可以添加应用程序权限(从您的服务器应用程序)。

【讨论】:

  • 技术上它会起作用,但在我的组织中获得管理员同意并不容易,我必须去获得安全批准。一旦我得到批准,我会尝试一下。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2022-11-03
  • 1970-01-01
相关资源
最近更新 更多