Azure active directory 获得访问的 token

一直认为 Azure 的设计过于复杂,权限要求过多,就感觉是一群技术宅做的系统。相对 AWS 来说,更加喜欢 AWS 的功能设计。

但是因为工作需要又不得不使用 Azure,所以把使用过程中遇到的一些问题都记录下来,以期望能帮助有需要的人。

这篇文章主要用于介绍如何使用 postman 来获得 Azure active directory 的用户访问 token,这个步骤是使用 Azure 对用户鉴权使用的第一步。

确定 tenant

Azure 允许你有多个 tenant,你可以在 Azure 的控制台中对 tenant 进行切换,这个是你需要做的第一步。确定你希望使用的 teant。

如果你还没有 tenant 的话,你需要创建一个 tenant。

 

Azure active directory 获得访问的 token

 

 

当找到你需要的 Tenant 以后,你会获得一个 tenant ID,这个非常重要。

因为这个表示的是你 AD 的唯一标识,所以你需要记录下来。

Tenant ID 在你界面中的的 Tenant Information 里面

 

Azure active directory 获得访问的 token

 

注册 APP

不管你使用任何类型的应用,你都需要先注册一个 APP。

单击左侧的注册 APP 按钮。

 

Azure active directory 获得访问的 token

 

可以单击界面的上侧,注册一个新的应用。

 

Azure active directory 获得访问的 token

 

 

在弹出的界面中,输入注册需要的相关信息。

注册的名字你可以自行定义,需要注意的是,你需要选择:

  • Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)

这个注册选项。

假设,我们这里注册的应用是 WEB。

 

Azure active directory 获得访问的 token

 

获得基本参数

当你注册成功后,你可以单击你的注册名,然后你将会看到注册的应用信息界面。

在这个界面中,你会得到

  • Application (client) ID

  • Directory (tenant) ID

  • Object ID

这几个参数,这几个参数对你来说非常重要,你需要保存下来。

 

Azure active directory 获得访问的 token

 

设置 secrets

单击左侧的 Certificates & secrets,你将会看到密钥生成的界面。

在这里,你可以单击生成一个新的 Secret。

你可以不用给这个 secret 进行命名,你也可以命名你希望的名字。请注意将 secret 进行保存,因为下次你访问的时候,secret 就不会再显示了。

 

Azure active directory 获得访问的 token

 

API 赋权

你需要确定 Microsoft Graph 有用户读取的权限。

 

Azure active directory 获得访问的 token

 

如果没有这个权限的话,你需要单击上面的添加权限来将权限添加进来。

 

Azure active directory 获得访问的 token

 

选择 Microsoft Graph 的选项,然后将用户的权限添加进来。

 

Azure active directory 获得访问的 token

 

暴露 API

你需要将你的 API 进行暴露,允许进行访问。

 

Azure active directory 获得访问的 token

 

你需要添加一个新的 Scope,在这里我们假设你添加了一个叫做 user.read 的 scope。

在弹出的界面中你可以输入你需要的选项。

你可以选择 Admins and users

 

Azure active directory 获得访问的 token

 

修改 Manifest

这个配置参数你需要手动修改。

主要修改参数是:oauth2AllowImplicitFlow 修改为 true

 

Azure active directory 获得访问的 token

 

至此,Azure 的配置已经完成了,下一步就是配置你的客户端进行测试了。

Postman 测试

可以通过 Postman 进行测试获得 token。

你有 2 种方法进行测试,我们测试的是不通过授权,直接通过 secret 来获得 token。

另一种方法,我们在其他方式中再进行测试。

在 Postman 中添加一个 API 访问。

访问方法

使用 GET 进行访问

访问 URL

访问的 URL 是:https://login.microsoftonline.com/tenant ID/oauth2/v2.0/token

这里有一个参数要进行替换,就是 Tenant ID,这个 ID 在开始的时候就用于标识一个 AD,我们已经在前面的步骤保存了。

Headers

添加参数 Content-Type 为 application/x-www-form-urlencoded

 

Azure active directory 获得访问的 token

 

Body

grant_type : client_credentials
client_id: 4ab1a0b7-da1d-423d-9fc3-e3a6fabd9
client_secret:SYk.HZT_jK6ZE1~3tle2Ha0MeV.9
scope: api://4ab1a0b7-da1d-423d-9fc3-e3a6fabd9/.default

这里参数有一根需要注意的地方。

client_id 是我们在最开始的时候 APP 创建成功后获得 client_id。

client_secret 是我们我们在 APP 注册成功后,创建的秘钥。

scope:是我们创建的的 scop,但是需要注意的是,我们创建的 scope 是以 user.read 结尾的,在我们获得 token 的时候,不能使用上面结尾的 scope,而需要将 user.read 修改为 .default

因此 scope 的配置就是 api://client_id/ .default.

请注意,你一定要这么配置,否则你拿不到 token

当一切配置好后,你可以发送请求,如果一切正确的话,你将会看到服务器返回给你的 token 字符串。

 

https://www.ossez.com/t/azure-active-directory-token/558


上一篇:日志多租户架构下的Loki方案


下一篇:Azure App object和Service Principal