自定义存储

运行机制

  1. 您的应用程序(客户端)向艾克索拉登录管理器服务器发送请求。请求格式见JWTGeneral方法组的说明。
  2. 艾克索拉登录管理器服务器向您的服务器发送请求。按照说明验证请求。
  3. 艾克索拉登录管理器服务器会处理来自您的服务器的响应并将结果返回给客户端。
  4. 您的客户端处理此响应。

Info: 用户信息存储于数据库和艾克索拉中。密码仅保留在数据库中。

注册

  1. 您的客户端向艾克索拉登录管理器服务器发送Register请求。
  2. 艾克索拉登录管理器服务器发送请求至新用户URL。响应必须为此说明中所述的格式。

请求示例:

POST https://example.registration.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

  1. 用户信息写入艾克索拉数据库,并且:
    • email参数标记为未确认。用户将收到一封用户确认邮件
    • 密码未写入。
  2. 如果集成了登录管理器小组件,则用户将重定向到包含以下信息的页面:请按照发送至{email}的说明验证您的帐户

通过用户名和密码进行身份验证

  1. 您的客户端向艾克索拉登录管理器服务器发送Auth by Username and Password请求。
  2. 艾克索拉登录管理器服务器发送请求至用户认证URL。响应必须为此说明中所述的格式。

请求示例:

POST https://example.authentication.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com",
  "password": "123456"
}

  1. 艾克索拉登录管理器服务器生成一个用户JWT。
  2. 用户重定向到login_url,且包含一个token查询参数。token参数包含用户JWT。

如果艾克索拉数据库中没有与此用户相关的信息,则会创建新条目,但密码不会被覆盖。

密码重置

  1. 您的客户端向艾克索拉登录管理器服务器发送Reset Password请求。
  2. 艾克索拉登录管理器服务器发送请求至密码重置URL。响应必须为此说明中所述的格式。随后用户将收到密码更改验证邮件。

请求示例:

POST https://example.reset.com

Headers:
Content-Type: application/json
Authorization: Bearer {JWT}

Body:
{
  "email": "john@gmail.com"
}

  1. 新密码写入您的数据库。

使用者

集成了登录管理器并实现了基于JWT标准的认证方式的合作伙伴。

如何获取

要设置艾克索拉登录管理器服务器和您的应用程序(客户端)之间的连接:

  1. 连接自定义存储。
  2. 设置对来自艾克索拉登录管理器服务器请求的验证。

连接自定义存储

  1. 前往发布商帐户 > 登录管理器项目 > 常规设置
  2. 用户数据存储块中,选择自定义存储
  3. 输入用于发送API请求的URL:
    • 用户验证URL,
    • 新用户URL,
    • 密码重置URL,
    • 邮箱更改URL。
  4. 实施API,以下面的方式响应:
    • HTTP 200/HTTP 204指示请求成功。如果需要,可以将包含其他用户数据的JSON置于响应正文中。传输的数据将写入到JWT > partner_data参数。
    • 其他HTTP状态代码指示请求失败。

Info: 如果希望JWT中包含数据库中的用户ID,请联系您的帐户经理。

验证来自艾克索拉登录管理器服务器的请求

艾克索拉登录管理器服务器请求发送至您的URL,且包含Authorization: Bearer <JWT>标题。JWT已使用您的项目密钥签名。

要验证该JWT:

  1. 复制密钥的值(发布商帐户 > 您的登录管理器项目 > 常规设置 > 密钥)。
  2. 选择一个,然后将密钥值传递给验证函数。
  3. 如果验证成功,则解码JWT并确保其包含下表中的声明。查找并使用一个用于解码。

声明描述
expJWT过期日期和时间,格式为Unix时间戳。JWT寿命为7分钟。
iatJWT的发出日期和时间,格式为Unix时间戳
iss签名JWT的服务,例如https://login.xsolla.com
request_type常量:gateway_request
xsolla_login_project_id您发布商帐户的登录管理器项目ID。

示例:

{
  "exp": 1573635020,
  "iat": 1573634600,
  "iss": "https://login.xsolla.com",
  "request_type": "gateway_request",
  "xsolla_login_project_id": "00000000-0000-0000-0000-000000000000"
}