小编bra*_*buz的帖子

使用 Curl 访问受 Microsoft Identity Platform (Azure Ad) 保护的 API

我们有一个 .net core 应用程序,它使用 Azure AD 进行身份验证 (MSAL/v2.0)。我们希望 Linux 应用程序能够从第一个应用程序访问 API。第二个应用程序没有用户上下文,并且将像curl 脚本一样进行交互。

通过阅读文档,我认为我应该使用 azure ad 注册第二个应用程序。我可以获得将目标应用程序作为受众的 JWT 令牌,但无法访问 api。我们已经能够使用从登录用户捕获的访问令牌从脚本访问(真实)api。

我创建了一个测试环境来寻找解决方案。

创建了一个由azure ad验证的.net core项目。它从我的工作站本地运行,未部署到天蓝色。Azure 身份验证适用于交互式用户。

注册了第二个应用程序并为其创建了一个秘密。

第一个应用程序配置了 id 和访问令牌以进行隐式授予,但未将其设置为公共客户端。

我在清单中定义了一个 approle“access_as_application”。

在“公开 API”下,我创建了一个范围“api”,并将另一个应用程序添加为授权客户端应用程序。

在 API 权限下,我添加了一个权限,选择了应用程序权限并检查了我之前创建的 approle。

我可以运行一个curl脚本并检索一个不记名令牌,该令牌在解码时会显示与我的应用程序匹配的受众。当我在curl 脚本中使用该令牌时,它会被重定向以登录。

显现:

{
    "id": "33b*******************************",
    "acceptMappedClaims": null,
    "accessTokenAcceptedVersion": 2,
    "addIns": [],
    "allowPublicClient": null,
    "appId": "3d8*******************************",
    "appRoles": [
        {
            "allowedMemberTypes": [
                "Application"
            ],
            "description": "Access webapp as an application.",
            "displayName": "access_as_application",
            "id": "ff5ea9b2*******************************",",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "value": "access_as_application"
        }
    ],
    "oauth2AllowUrlPathMatching": …
Run Code Online (Sandbox Code Playgroud)

curl azure azure-active-directory .net-core azure-ad-msal

6
推荐指数
1
解决办法
1万
查看次数