通过单点登录访问发布资源
通过单点登录访问发布资源
本文将详细介绍如何通过单点登录去访问发布资源。用户可使用自己的单点登录系统,以空间成员的身份登录,进而访问发布资源。
发布资源
在发布资源时,若勾选访问限制并设置了登录验证,访问规则如下:
若未设置用户和用户组,任何人都可通过单点登录访问该资源。
若设置了用户或用户组,那么必须先完成用户同步,并且 Token 中的 sub 必须与登录名一致,才具备访问权限。

单点登录配置
管理空间下的单点登录配置。
名称: 配置名称。
应用端 ID: oauth-server 需要的 client_id。
应用端访问密钥: oauth-server 需要的 client_secret。
授权服务器地址: oauth-server 认证服务的根地址。
授权回调地址: 河图接收授权码的地址,/hetu/space/sso/callback 为固定路径。
默认授权范围: scope 参数的值。
是否支持 openid-configuration 端点: 认证服务器是否有 openid-configuration 端点。
状态: 是否允许通过该配置登录。
备注: 备注。

认证服务器标准
空间单点登录,需要 oauth-server 支持 client_secret_basic 客户端认证方法。河图会按照 Oauth2.0 的标准请求认证服务器。
openid-configuration 端点
OIDC 协议中的标准端点,用于获取认证服务器的相关配置。
响应示例
这里只展示了部分返回信息,用户可以通过返回下面三个端点信息,覆盖默认配置。
authorization_endpoint: 获取授权码端点。
token_endpoint: 获取 accessToken 端点。
userinfo_endpoint: 获取用户信息端点。
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"authorization_endpoint":
"http://192.158.45.125:7745/authorize",
"token_endpoint":
"http://192.158.45.125:7745/token",
"userinfo_endpoint":
"http://192.158.45.125:7745/userinfo"
}authorization_endpoint 端点
Oauth2.0 协议中获取授权码端点,在请求该端点时,河图携带的state 参数必须要在回调地址中带上该参数。
token_endpoint 端点
Oauth2.0 协议中获取 accessToken 端点。
响应示例
access_token: 访问令牌。
token_type: Token 类型。
refresh_token: 刷新令牌,刷新 Token 时使用。
expires_in: 令牌有效期,单位秒。
id_token: 身份令牌。
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
{
"access_token": "SlAV32hkKG",
"token_type": "Bearer",
"refresh_token": "8xLOxBtZp8",
"expires_in": 3600,
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzc
yI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5
NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZ
fV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5Nz
AKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6q
Jp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJ
NqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7Tpd
QyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoS
K5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4
XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg"
}提示
如果不支持 userinfo_endpoint,access_token 和 id_token 至少有一个需要符合标准的JWT Token格式。Token 的 payload 中必有包含 sub claim。sub 在河图系统中作为用户唯一标识。
userinfo_endpoint 端点
OIDC 协议中获取用户信息端点。如果 openid-configuration 端点返回了该端点数据,会请求该端点获取用户信息。
响应示例
HTTP/1.1 200 OK
Content-Type: application/json
{
"sub": "248289761001",
"name": "Jane Doe",
"given_name": "Jane",
"family_name": "Doe",
"preferred_username": "j.doe",
"email": "janedoe@example.com",
"picture": "http://example.com/janedoe/me.jpg"
}提示
该端点需要返回 sub 作为用户唯一标识。
