0

我正在尝试使用 Spring 应用程序访问 Web api(均由我自己拥有)来设置客户端凭据流。我尝试遵循 Azure 文档Microsoft 身份平台和 OAuth 2.0 客户端凭据流程快速入门:配置客户端应用程序以访问 Web API,但由于文档不清楚,我遇到了一些问题。在我的设置中,Azure 强制用户登录,然后其他错误消息从那里出现。然而,正如我们所知,客户端凭据应该是机器对机器的授权,所以我不确定为什么会发生这种登录流程。

下面是我的设置。任何反馈都会帮助我开始跑步。

环境

OS: Ubuntu 20.10
IDE: Visual Studio Code
Library/Libraries:
com.azure.spring:azure-spring-boot-starter-active-directory:3.5.0
org.springframework.boot:spring-boot-starter-oauth2-client

应用程序.yml

 azure:
  activedirectory:
    tenant-id: {my-web-app-tenant-id}
    client-id: {my-web-app-client-id}
    client-secret: {my-web-app-client-secret}
    authorization-clients:
     web-api:
       scopes:
         - api://example-api/Employees.Read.All
         - api://example-api/Employees.Write.All

Azure 配置 Web-app 和 web-api 注册的应用程序

Web-api 范围和与 web-app 客户端匹配的授权客户端

Web 应用身份验证设置

Web-App 权限,包括 web-api 权限

4

2 回答 2

1

您当前应该执行服务器到服务器的交互,即没有用户参与。所以你的服务器应用程序需要创建一个appRole,然后将app Role作为应用程序的权限授予客户端应用程序

首先需要暴露Azure保护的服务端应用的api,可以按照如下流程进行配置:

Azure 门户>应用注册>公开 API>添加范围>添加客户端应用程序

在此处输入图像描述

然后您需要创建appRole服务器应用程序,然后将该角色作为应用程序权限授予客户端应用程序。

在此处输入图像描述

接下来,转到客户端应用程序>API 权限>添加权限>我的 APIs >您的 api 应用程序。

在此处输入图像描述

最后,您需要使用没有用户登录的客户端凭据流获取访问令牌:

在此处输入图像描述

解析token:</p>

在此处输入图像描述

于 2021-06-30T07:37:29.753 回答
0

@比利博尔顿。

使用时有几种类型的应用程序azure-spring-boot-starter-active-directory

  1. 当您的应用程序为web application时,将出现登录流程。
  2. 当您的应用程序是resource server时,不会出现登录流程。

相关文档:

  1. https://github.com/Azure/azure-sdk-for-java/tree/azure-spring-boot-starter-active-directory_3.6.0/sdk/spring/azure-spring-boot-starter-active-directory#访问网络应用程序
  2. https://github.com/Azure/azure-sdk-for-java/tree/azure-spring-boot-starter-active-directory_3.6.0/sdk/spring/azure-spring-boot-starter-active-directory# Web 应用程序访问资源服务器

相关样本:

  1. https://github.com/Azure-Samples/azure-spring-boot-samples/tree/azure-spring-boot_3.6/aad
于 2021-07-30T06:44:43.440 回答