单点登录
运行机制
如果您有若干关联的服务且使用一个通用单一帐户来认证用户,可使用单点登录解决方案。游戏网站可用作一个服务,用户只需输入一次凭证即可。如果用户之后再打开其他关联的服务,即为已认证状态。
交互过程
- 未认证的用户打开其中一个服务。
- 您的服务器向艾克索拉登录管理器服务器发送
Check user authentication 请求并得到错误401。 - 您的客户端打开用户认证表单(通过登录管理器小组件或您的登录管理器UI)。
- 用户通过用户名和密码或社交网络帐户进行认证。
- 您的客户端在您的登录管理器项目中认证用户:用户会话数据保存在艾克索拉登录管理器服务器上。服务器发送包含
redirect_uri
和查询参数为code
的login_uri
。
- 您的服务器将用户重定向至
redirect_uri
。 - 您的服务器发送
Generate JWT 请求用收到的code
换取JWT。用户即在该服务上完成认证。 - 用户打开另一个服务。
- 您的服务器向艾克索拉登录管理器服务器发送
Check user authentication 请求并收到包含redirect_uri
和查询参数为code
的login_uri
。 - 您的服务器发送
Generate JWT 请求用收到的code
换取JWT。用户即在第二个服务上完成认证。
区分不同服务的访问权限
要区分不同服务的用户帐户访问权限,可在不同OAuth 2.0客户端中为scope=playfab
)。适用对象
集成了登录管理器并使用艾克索拉、Firebase或PlayFab数据库的合作伙伴。
如何获取
要关联单点登录:
连接OAuth 2.0协议
按照此说明连接OAuth 2.0协议。您可以为所有服务使用一个OAuth 2.0客户端,也可以为每个服务创建单独的OAuth 2.0客户端。调用获取用户会话的请求
实现打开服务时
请求示例:
Copy
http
- http
- curl
GET https://login.xsolla.com/api/oauth2/sso?client_id=<client_id>&redirect_uri=<redirect_uri>&scope=<scope>&state=<state>&response_type=code HTTP/1.1
curl --request GET \
--url 'https://login.xsolla.com/api/oauth2/sso?redirect_uri=redirect_uri&response_type=code&state=state&scope=scope&client_id=client_id'
用户已认证的响应示例:
Copy
- http
HTTP/1.1 200 OK
Content-Type: application/json
{
"login_url": "<redirect_uri>?code=<code>"
}
要获取用户JWT:
- 您的客户端实现并使用将用户重定向至收到的
redirect_uri
的请求。 - 您的服务器发送
Generate JWT 请求并包含收到的code
和grant_type=authorization_code
,以获得一个JWT。
用户未认证的响应示例:
Copy
- http
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"error": {
"code": "003-040",
"description": "User is unauthorized."
}
}
本文对您的有帮助吗?
感谢您的反馈!
我们会查看您的留言并运用它改进用户体验。发现了错别字或其他内容错误? 请选择文本,然后按Ctrl+Enter。