OAuth 2.0

授权码

  1. 创建配置文件

    {数据目录,默认/data/mingdao}/script/volume/sso/sso.json,内容如下:

    {
      "mode": "common-oauth2",
      "name": "oauth2",
      "oauth2": {
        "oauth2Url": "oauth2 服务器地址",     
        "clientId": "应用Id",                           // 分发给应用的客户端Id
        "clientSecret": "应用密钥",                     // 分发给应用的客户端密钥
        "idParamName":  "client_id",                   // client_id 映射的参数名, 根据 authorizePath、tokenPath 接口请求参数而定
        "secretParamName": "client_secret",            // client_secret 映射的参数名, 根据 authorizePath、tokenPath 接口请求参数而定
        "accessTokenParamName": "access_token",        // access_token 映射的参数名, 根据 tokenPath 接口返回参数而定
        "redirectUri": "明道云系统地址/orgsso/oauth2",  // 回调地址
        "authorizePath": "/authorize",                 // authorize 访问地址,实际对应 oauth2Url + authorizePath
        "tokenPath": "/access_token",                  // 获取访问令牌接口地址,实际对应 oauth2Url + tokenPath
        "userInfoUrl": "获得用户信息完整接口地址",       // 如:http://172.17.30.21/getUserInfo,最终请求 url 会自动携带 token 参数,类似:http://172.17.30.21/getUserInfo?token={access_token}
        "params": {
          "UserId": "UserId",                          // 用户唯一标识
          "Name": "Name",                              // 姓名(仅 autoRegister 为 false 时可空)
          "Email": "Email",                            // Email、Mobile 不能同时为空 (仅 autoRegister 为 false 时均可空)
          "Mobile": "Mobile", 
          "Positions": "Positions",                    // 职位,可为空,数组
          "Departments":"Departments"                  // 部门,可为空,数组
        },
        "autoRegister": true,                          // 当账号不存在时,是否自动创建账号
        "projectId": "明道云组织编号"                   // 从 组织管理 > 组织信息 页面获取
      }
    }
    

    当 autoRegister 设置为 false 时,创建 {数据目录,默认/data/mingdao}/script/volume/sso/extend.json,内容如下:

    {
      "relation": true
    }
    

    获取访问令牌的接口需要满足以下要求:

    1. 支持 POST 方式调用(Content-Type:application/x-www-form-urlencoded)

    2. 返回值为 JSON 格式,且需满足如下格式:

      {     
        "access_token": "wQ7kZ5iJ1lK9iU0mJ2oH4rN0uW8gI1vV4fR1jC7yG8yX4gP2qK6mH1iS7iX4zQ1w",     
        "expires_in": 7200   // 单位秒
      }
      

    获取用户信息的接口需要满足以下要求:

    1. 支持 GET 方式调用(参考 userInfoUrl 参数说明)

    2. 返回值为 JSON 格式,且需满足如下格式:

      {    
        "data": {
          "uid": "用户id",
          "name": "姓名",
          "email": "邮箱",
          "mobilePhone": "手机号",
          "positions":["职位1","职位2"],
          "departments":["部门1","部门2"]
        } 
      }
      

      如以上返回值,则 params 的配置为:

      "params": {
        "UserId": "uid",
        "Name": "name",
        "Email": "email",
        "Mobile": "mobilePhone", 
        "Positions": "positions",
        "Departments":"departments"
      }
      
  2. 挂载配置文件

    修改微服务应用对应的 docker-compose.yaml,在 volumes 中增加文件挂载并重启微服务应用。

    - ./volume/sso/sso.json:/usr/local/MDPrivateDeployment/sso/OptionFile/sso.json
    - ./volume/sso/extend.json:/usr/local/MDPrivateDeployment/sso/extend.json  # 仅 autoRegister 为 false 时需要添加此行
    
  3. 最后可通过 明道云系统访问地址/orgsso/sso?returnUrl={登录成功跳转地址,可空} 来进行单点登录

results matching ""

    No results matching ""