一直认为 Azure 的设计过于复杂,权限要求过多,就感受是一群技术宅作的系统。相对 AWS 来讲,更加喜欢 AWS 的功能设计。api
可是由于工做须要又不得不使用 Azure,因此把使用过程当中遇到的一些问题都记录下来,以指望能帮助有须要的人。服务器
这篇文章主要用于介绍如何使用 postman 来得到 Azure active directory 的用户访问 token,这个步骤是使用 Azure 对用户鉴权使用的第一步。app
Azure 容许你有多个 tenant,你能够在 Azure 的控制台中对 tenant 进行切换,这个是你须要作的第一步。肯定你但愿使用的 teant。ide
若是你尚未 tenant 的话,你须要建立一个 tenant。post
当找到你须要的 Tenant 之后,你会得到一个 tenant ID,这个很是重要。测试
由于这个表示的是你 AD 的惟一标识,因此你须要记录下来。url
Tenant ID 在你界面中的的 Tenant Information 里面设计
无论你使用任何类型的应用,你都须要先注册一个 APP。3d
单击左侧的注册 APP 按钮。code
能够单击界面的上侧,注册一个新的应用。
在弹出的界面中,输入注册须要的相关信息。
注册的名字你能够自行定义,须要注意的是,你须要选择:
Accounts in any organizational directory (Any Azure AD directory - Multitenant) and personal Microsoft accounts (e.g. Skype, Xbox)
这个注册选项。
假设,咱们这里注册的应用是 WEB。
当你注册成功后,你能够单击你的注册名,而后你将会看到注册的应用信息界面。
在这个界面中,你会获得
Application (client) ID
Directory (tenant) ID
Object ID
这几个参数,这几个参数对你来讲很是重要,你须要保存下来。
单击左侧的 Certificates & secrets,你将会看到密钥生成的界面。
在这里,你能够单击生成一个新的 Secret。
你能够不用给这个 secret 进行命名,你也能够命名你但愿的名字。请注意将 secret 进行保存,由于下次你访问的时候,secret 就不会再显示了。
你须要肯定 Microsoft Graph 有用户读取的权限。
若是没有这个权限的话,你须要单击上面的添加权限来将权限添加进来。
选择 Microsoft Graph 的选项,而后将用户的权限添加进来。
你须要将你的 API 进行暴露,容许进行访问。
你须要添加一个新的 Scope,在这里咱们假设你添加了一个叫作 user.read 的 scope。
在弹出的界面中你能够输入你须要的选项。
你能够选择 Admins and users
这个配置参数你须要手动修改。
主要修改参数是:oauth2AllowImplicitFlow 修改成 true
至此,Azure 的配置已经完成了,下一步就是配置你的客户端进行测试了。
能够经过 Postman 进行测试得到 token。
你有 2 种方法进行测试,咱们测试的是不经过受权,直接经过 secret 来得到 token。
另外一种方法,咱们在其余方式中再进行测试。
在 Postman 中添加一个 API 访问。
使用 GET 进行访问
访问的 URL 是:https://login.microsoftonline.com/tenant ID/oauth2/v2.0/token
这里有一个参数要进行替换,就是 Tenant ID,这个 ID 在开始的时候就用于标识一个 AD,咱们已经在前面的步骤保存了。
添加参数 Content-Type 为 application/x-www-form-urlencoded
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 字符串。