arckinteractive / elgg3_oauth_sso

该包最新版本(dev-master)没有可用的许可信息。

允许其他网站/服务使用Elgg作为用户信息真实来源实现SSO

安装: 3

依赖: 0

建议者: 0

安全: 0

星星: 1

关注者: 3

分支: 1

开放问题: 0

类型:elgg-plugin

dev-master 2021-08-04 04:24 UTC

This package is auto-updated.

Last update: 2024-09-04 10:43:17 UTC


README

允许其他网站使用elgg服务器作为oauth身份管理器

  1. /admin/applications注册一个新的应用程序
  2. 通过让用户在[url]/oauth/authorize?client_id=xxxxxxxx&state=xxxxxxxx&response_type=code&scope=user登录来授权用户,其中client_id是应用程序生成的id,state是一个随机字符串,用于防止CSRF攻击
  3. 如果需要,用户将登录并授权应用程序
  4. 用户将被重定向回redirect_uri,带有原始状态查询参数和一个代码:[redirect_uri]?state=xxxxxx&code=xxxxxxxx
  5. 使用以下正文参数向/oauth/token发送POST请求
    {
        client_id: xxxxxxxx,
        client_secret: xxxxxxx,
        grant_type: 'authorization_code',
        redirect_uri: 'https://xxxxxxxxxxxxx',
        code: xxxxxxxxxx
    }
  1. 结果将是一个访问令牌
    {
        "access_token": "369e27dae447d3856fc538a217536b186cea1bc3",
        "expires_in": 3600,
        "token_type": "Bearer",
        "scope": "user",
        "refresh_token": "3c706473a576815c503a119626d674331becc4c8"
    }
  1. 用于未来OAuth API调用的访问令牌在头信息中:Authorization: Bearer 369e27dae447d3856fc538a217536b186cea1bc3
  2. 从GET端点/oauth/api/me检索用户信息
    {
        "name": "Matt Beckett",
        "username": "mbeckett",
        "email": "matt@arckinteractive.com"
    }
  1. 如果需要,使用刷新令牌获取新的访问令牌,向/oauth/token发送POST请求,正文参数为
    {
        client_id: xxxxxxxx,
        client_secret: xxxxxxx,
        grant_type: 'refresh_token',
        refresh_token: xxxxxxxxxx
    }