context 对象

context 对象中保存了当前认证流程的上下文,包括认证手段、身份提供方,以及请求 IP, 地址等。

属性

属性名

类型

说明

protocol

string

认证协议。具体说明见下文。

connection

string

身份提供方。具体说明见下文。

ldapConfiguration

object

ldap 配置,在为 ldap 认证的情况下带有。具体说明见下文。

samlConfiguration

object

saml 配置,在为 saml 认证的情况下带有。具体说明见下文。

oidcConfiguration

object

OIDC 应用配置,在为 OIDC 认证的情况下带有。具体说明见下文。

data

object

GraphQL POST 请求数据。如在注册前 Pipeline 中,开发者可以获取邮箱、手机号、注册方式等信息。详细字段请见下文

headers

object

原始请求头信息。

userPool

object

用户池详细信息。处于安全考虑,这里不包含 secret 和 token。具体说明见下文。

ip

string

请求者 IP。

geo

object

包含了请求者的地址信息以及经纬度坐标。具体说明见下文。

protocol

认证协议。

可能值

说明

basic

普通认证模式,基于用户名密码、手机号验证码。

social

社会化登录认证默认,当使用 Authing 集成的社会化登录手段登录时为此值。

ldap

saml

oidc

connection

身份提供方。

可能值

说明

authing

如使用用户名密码、手机号验证码,基于 Authing 的数据库进行验证。

ldap:<LDAP服务ID>

saml:<SAML Idp 服务 ID>

oidc:<OIDC 应用 ID>

social:github

social:wechat-pc

social:wechat-miniprogram

social:wechat-app

social:app2wxapp

social:wechat-officialaccount-web

social:qq-web

social:weibo-web

social:dingtalk-web

social:alipay-mobile

social:wechatwork-web

social:wechatwork-qrconnect

data 对象

注册前、注册后 Pipeline 中 data 对象部分请求字段如下:详情请见 Authing GraphQL 调试器 用户鉴权 - 注册接口。

email, phone, unionid 等字段不一定同时存在,使用前请先判断其是否存在!如

const email = context.data.userInfo.email
if(email) {
    // 表示是用邮箱注册
    // 可以进行邮箱注册白名单的逻辑
    
    if(!email.endsWith('example.com')){
        return callback(new Error('Access Denied!'))
    }
}

字段名

类型

说明

userInfo

object

用户注册所填的数据,如邮箱、手机号、浏览器 UA 等。

userInfo.registerInClient

string

注册用户池

userInfo.registerMethod

string

注册方式。若开发者自己使用 SDK 开发使用此接口,最好提供注册方式。如未提供,Authing 将从其他是否提供 unionidemail, phoneusername 四个字段推测注册方式(优先级递减,比如同时提供 unionidemail,会被视为 unionid 方式注册)。

userInfo.unionid

string

社会化登录的 unionid。

userInfo.email

string

邮箱。

userInfo.phone

string

手机号。

userInfo.photo

string

用户头像。

认证后 Pipeline 中 data 对象部分请求字段如下:详情请见 Authing GraphQL 调试器 用户鉴权 - 登录接口。

这些字段不一定全部存在,使用前请先判断是否存在!

字段名

类型

说明

registerInClient

string

用户池 ID

phone

string

手机号

phoneCode

string

手机号验证码

unionid

string

社会化登录 unionid

openid

string

社会化登录 openid

email

string

邮箱

lastIP

string

登录 IP

browser

string

浏览器

userPool 对象

字段名

类型

说明

_id

string

用户池 ID

name

string

用户池名称

logo

string

用户池图标

registerDisabled

boolean

是否关闭注册

userPoolTypeList

array

用户池类型列表。每个类型内容如下:

{
      "_id": "5e193ceb71edb858dc54b8ef",
      "name": 'Web',
      "description": 'Web Application',
      "example": 'Web SDK',
      "image": ''
}

geo 属性

示例数据:

{
	"address": "湖南省长沙市",
	"address_detail": {
		"city": "长沙市",
		"city_code": "430100",
		"district": "",
		"province": "湖南省",
		"street": "",
		"street_number": ""
	},
	"point": {
		"x": "112.6534116",
		"y": "27.96920845"
	}
}

oidcConfiguration

  • _id: OIDC 应用 ID。

  • clientId: 用户池 ID。

  • redirect_uris: 回调链接列表。

  • token_endpoint_auth_method: 换取 token 认证模式。

  • grant_types: 授权模式。

  • id_token_signed_response_alg: id_token 签名算法。

  • authorization_code_expire: authorization_code 有效时间,单位为秒。

{
  image: 'https://usercontents.authing.cn/oauth/applications/Flw6fw74vCzeZR17ApcRARSxIE7A',
  redirect_uris: [ 'http://localhost:8888/oidc/handle' ],
  token_endpoint_auth_method: 'client_secret_post',
  grant_types: [ 'authorization_code', 'refresh_token' ],
  response_types: [ 'code' ],
  id_token_signed_response_alg: 'HS256',
  isDeleted: false,
  isDefault: true,
  authorization_code_expire: '600',
  id_token_expire: '3600',
  access_token_expire: '3600',
  cas_expire: '3600',
  _id: "5d9f78ace01c86293a9c0857",
  name: 'OIDC 应用名称',
  domain: 'domain',
  clientId: '5d9f78acb02d3e14484cfc37',
  description: '',
  when: 2019-10-10T18:30:04.784Z,
  client_id: '5d9f78ace01c86293a9c0857',
  client_secret: '6536f317ca56779ea9b0c4bde4869c66',
  __v: 0,
  css: '/* \n' +
    '  在此编辑认证页面的 css 代码\n' +
    '  如:\n' +
    '  body {\n' +
    '    background: #6699 !important;\n' +
    '  } \n' +
    '  用于修改背景色\n' +
    '*/',
  customStyles: {
    forceLogin: true,
    hideQRCode: false,
    hideUP: false,
    hideUsername: false,
    hideRegister: false,
    hidePhone: false,
    hideSocial: false,
    hideClose: false,
    placeholder: {
      username: '请输入用户名',
      email: '请输入邮箱',
      password: '请输入密码',
      confirmPassword: '请确认密码',
      verfiyCode: '请输入验证码',
      newPassword: '请输入新密码',
      phone: '请输入手机号',
      phoneCode: '4 位验证码'
    },
    qrcodeScanning: { interval: 1500, tips: '使用微信扫码登录' }
  }
}

Last updated