轻流 x 微软AD--单点登录
应用场景
通过轻流配置单点登录sso,实现微软AD授权登录至轻流。
落地方案

图文/视频演示
帮助文档
一、获取配置信息
1、登录微软AD
https://portal.azure.com/#home

2、操作步骤路径
1、点击进入Azure Active Directory

2、进行应用注册



3、获取client ID

4、获取client secret


二、轻流配置单点登录sso
配置文档参考:https://learn.microsoft.com/zh-cn/graph/auth-v2-user?tabs=http
1、用户同意授权,获取code
授权代码流中的第一步是让用户授权应用代表他们执行操作。
在流中,应用将用户重定向到Microsoft 标识平台/authorize终结点。 通过此终结点,Azure AD 将用户登录并请求其同意应用请求的权限。 获得同意后,Azure AD 将向应用返回授权 代码 。 然后,应用可以在 Microsoft 标识平台 /token 终结点兑换此代码以获取访问令牌。
// Line breaks for legibility only
GET https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=11111111-1111-1111-1111-111111111111
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=offline_access%20user.read%20mail.read
&state=12345 HTTP/1.1

轻流中配置如下:
其中租户ID需要放在URL中。

redirect_uri=https://accounts.qingflow.com/sso/cb

2、通过 code 换取网页授权access_token
首应用使用在上一步中收到的授权 code ,通过向终结点发送 POST 请求来请求 /token 访问令牌。
// Line breaks for legibility only
POST /{tenant}/oauth2/v2.0/token HTTP/1.1
Host: https://login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
client_id=11111111-1111-1111-1111-111111111111
&scope=user.read%20mail.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=HF8Q~Krjqh4r... // NOTE: Only required for web apps

返回说明
正确时返回的 JSON 数据包如下:
HTTP/1.1 200 OK
Content-type: application/json
{
"token_type": "Bearer",
"scope": "Mail.Read User.Read",
"expires_in": 3736,
"ext_expires_in": 3736,
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q...",
"refresh_token": "AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4..."
}

轻流中配置如下:

3、获取用户信息
拥有访问令牌后,应用会使用它调用 Microsoft Graph,方法是将访问令牌作为 持有者 令牌附加到 HTTP 请求中的 Authorization 标头。 以下请求获取已登录用户的配置文件。
GET https://graph.microsoft.com/v1.0/me HTTP/1.1
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw
Host: graph.microsoft.com
返回说明
正确时返回的 JSON 数据包如下:
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users/$entity",
"businessPhones": [],
"displayName": "zhangziqi",
"givenName": null,
"jobTitle": null,
"mail": null,
"mobilePhone": null,
"officeLocation": null,
"preferredLanguage": null,
"surname": null,
"userPrincipalName": "zhangziqi@hellogww126.onmicrosoft.com",
"id": "8d63372b-6f77-4ad3-9c53-6724118a9f6f"
}
轻流中配置如下:

三、实际测试
1、复制登录链接,在网页端打开

2、输入账号密码登录

3、登录成功
