Skip to main content
Version: 简体中文

OAuth 2.0-Azure AD(中国版)单点登录配置示例

本文介绍基于 OAuth 2.0 协议,集成微软 Azure Active Directory 中国版 (以下简称 Azure AD) 与 DM Hub 的操作步骤,从而实现单点登录。DM Hub 单点登录配置整体流程请参阅单点登录

在 DM Hub 中为 Azure AD 用户设置 OAuth 2.0 单点登录的操作步骤如下:

  1. 在 Azure AD 上注册新应用并获取所需配置信息
  2. 开启 DM Hub 中OAuth 2.0单点登录功能
  3. 将获取的 Azure AD 应用信息填写至 DM Hub 对应配置项
  4. 将 DM Hub 回调地址返回给 Azure AD
  5. 进行验证,新增单点登录用户
  6. 进行 SSO 登录

DM Hub SSO 配置项与 Azure AD 应用信息对应关系如下:

DM Hub 配置项对应的 Azure AD 应用程序信息
Authorization URIAzure AD 应用程序终结点 OpenID Connect 元数据文档 里的 authorization_endpoint
请参阅OpenID Connect 元数据文档,了解获取方法。
Token URIAzure AD 应用程序终结点 OpenID Connect 元数据文档 里的 token_endpoint
请参阅OpenID Connect 元数据文档,了解获取方法。
User Info URIAzure AD 应用程序终结点 OpenID Connect 元数据文档 里的 userinfo_endpoint
请参阅OpenID Connect 元数据文档,了解获取方法。
jwkSet URI选填,Azure AD 应用终结点 OpenID Connect 元数据文档 里的 jwks_uri
请参阅OpenID Connect 元数据文档,了解获取方法。
Scopes选填,Azure AD 应用的 API 权限,如 openid,email, 或 profile。
请参阅设置 API 权限,了解操作方法。
Client IDAzure AD 应用程序(客户端) ID。
请参阅获取 Azure AD 应用程序(客户端) ID,了解获取方法。
Client SecreteAzure AD 应用程序的客户端密码值。
请参阅客户端密码值,了解获取方法。

1. 获取 Azure AD 应用信息

1.1. 在 Azure AD 上为 DM Hub 新建一个应用

  1. 登陆 Azure 中国版
  2. 进入 Azure Active Directory 服务。
  3. 选择 应用注册
  4. 点击 新注册

azure1

  1. 在注册应用程序页面:
    1. 输入名称。
    2. 受支持的帐户类型:一般请保持默认的「仅此组织目录」。
    3. 重定向 URI:请填写临时任意值占位,例如 http://localhost:8080/
    4. 点击 注册
      azure2
      新应用注册完成后,Azure AD 会自动跳转至新应用详情页。

1.2. 获取 Azure AD 应用程序(客户端) ID

复制保存新应用详情 概述 页面上的 应用程序(客户端) ID

azure3

1.3. 获取 Azure AD 应用程序客户端密码值

  1. 点击新应用详情页左侧导航栏上 证书与密码
  2. 点击 新客户端密码
  3. 在添加客户端密码对话框内,输入说明和截止期限:
    • 说明:可任意填写
    • 截止期限长:推荐选择 24个月,过期后需要更新
  4. 点击 添加

azure4

  1. 新增客户端密码后,应用详情页会出现以下页面,注意复制保存 客户端密码值 备用。
注意

客户端密码 除了刚刚创建时,之后无法查看客户端密码值。请务必在创建时保存密码,然后再离开该页面。

azure5

1.4. 获取 Azure AD 应用的「OpenID Connect 元数据文档」数据

OpenID Connect 描述了元数据文档,该文档包含了应用执行登录所需的大部分信息。OpenID Connect 元数据文档里的信息与 DM Hub SSO 配置字段对应如下:

  • token_endpoint: 对应 DM Hub SSO 配置项里的 Token URI
  • jwks_uri: 对应 DM Hub SSO 配置项里的 jwkSet URI
  • userinfo_endpoint: 对应 DM Hub SSO 配置项里的 UserInfo URI
  • authorization_endpoint: 对应 DM Hub SSO 配置项里的 Authorization URI

遵循以下步骤以获取 OpenID Connect 元数据文档相关信息:

  1. 点击应用详情页上 概述 > 终结点
  2. 复制 OpenID Connect 元数据文档 地址。

azure8

  1. 在新的浏览器窗口中打开 OpenID Connect 元数据文档地址。
  2. 浏览器会返回 JSON 格式的数据,里面包含了 SSO 配置所需的信息。复制以下字段的值信息:
    • token_endpoint
    • jwks_uri
    • userinfo_endpoint
    • authorization_endpoint

azure9

1.5. 设置 Azure AD 应用 API 权限

Azure AD 应用的 API 权限,对应 DM Hub SSO 配置项的 Scopes 字段。

  1. 点击应用详情页左侧导航栏上 API 权限
  2. 点击 添加权限
  3. 选择 Microsoft API > Microsoft Graph

azure6

  1. 权限类型选择 委托的权限
  2. 勾选 OpenId 权限里的 email,openid 和 profile。
  3. 点击 添加权限

azure7

2. 开启 DM Hub 上的单点登录功能

  1. 管理员进入 DM Hub 用户管理 > 单点登录 页面。
  2. 选择OAuth 2.0 认证协议。
  3. 打开单点登录功能开关。

3. 在 DM Hub 上填写 SSO 配置信息

  1. 进入 DM Hub 单点登录 页面
  2. 点击 步骤1 在DMhub设置 右侧 编辑 按钮
  3. 将在 Azure AD 上获取的应用程序(客户端) ID客户端密码值authorization_endpointtoken_endpoint userinfo_endpointjwks_uri,填入到对应的 DM Hub SSO 配置项目中。Azure AD 配置信息获取方法,请参阅获取 Azure AD 应用信息

填写示例如下:

DM Hub 配置项填写示例例
Authorization URIhttps://login.partner.microsoftonline.cn/856a38ec-36g8-5063-9617-ac77855e2d94/oauth2/v2.0/authorize
Token URIhttps://login.partner.microsoftonline.cn/856a38ec-36g8-5063-9617-ac77855e2d94/oauth2/v2.0/token
UserInfo URIhttps://microsoftgraph.chinacloudapi.cn/oidc/userinfo
Authentication MethodPOST
jwkSet URIhttps://login.partner.microsoftonline.cn/856a38ec-36g8-5063-9617-ac77855e2d94/oauth2/discovery/keys
Scopesemail profile openid
用户邮箱对应的参数email
Client IDf7072277-3697-5331-84g2-3041e773a6ca
Client Secret111ZpgusGY~*****************sM

4. 返回 DM Hub 的回调地址给 Azure AD

设置完配置信息后,需要将 DM Hub 单点登录里提供的回调地址,填到 Azure 的身份验证中:

  1. 设置完配置信息后,复制 DM Hub 提供的回调地址。
  2. 打开 Azure AD 应用详情的 身份验证 页面。
  3. 点击 Web 模块上的 添加 URI 按钮。
  4. 输入 DM Hub 提供的回调地址
  5. 点击 保存

azure10

5. 进行验证,在 DM Hub 上新增单点登录用户

  1. 进入 DM Hub 用户管理 > 单点登录 > OAuth 2 页面,点击 开始验证
  2. 点击 验证
  3. 验证通过后,点击 添加用户,输入邮箱等信息即可添加新SSO用户。
注意

DM Hub 中的单点登录邮箱要和 Azure 用户服务中用户的邮箱保持一致。

6. SSO 登录

管理员将免登录地址告知单点登录用户,单点登录用户可以通过免登录地址直接进行登录。

sso9

单点登录用户也可以通过 DM Hub 登录页面的 SSO 登录(单点登录) 按钮登录。

sso10


Microsoft Azure AD UserInfo