跳转到主要内容

{{ 描述 }}

项目描述

Oauth2 Flask服务

Build Status

一个通用的OAuth2认证服务和用户权限管理器。

基于 OpenSpending认证服务

快速开始

克隆存储库并安装

make install

运行测试

make test

运行服务器

python server.py

环境变量

  • PRIVATE_KEY & PUBLIC_KEY:PEM格式的RSA密钥对。有关更多信息,请参阅tools/generate_key_pair.sh
  • GOOGLE_KEY & GOOGLE_SECRET:用于通过Google进行认证的OAuth凭证
  • GITHUB_KEY & GITHUB_SECRET:用于通过Github进行认证的OAuth凭证
  • DATABASE_URL:一个兼容SQLAlchemy的数据库连接字符串(用户数据存储的位置)
  • EXTERNAL_ADDRESS:此服务所在的主机名
  • ALLOWED_SERVICES:可用的权限提供者。提供者标识符的分号分隔列表。每个提供者标识符的格式为[别名:]提供者,其中提供者是导出get_permissions(service, userid)函数的Python模块的名称。
  • INSTALLED_EXTENSIONS:已安装扩展的列表。扩展名由分号分隔的列表,扩展名是导出这些函数之一或所有函数的Python模块的名称。
    • on_new_user(user_info)
    • on_user_login(user_info)
    • on_user_logout(user_info)

API

检查认证令牌的有效性

/auth/check

方法: GET

查询参数

  • jwt - 认证令牌
  • next - 认证完成后要重定向到的URL

返回

如果已认证

{
    "authenticated": true,
    "profile": {
        "id": "<user-id>",
        "name": "<user-name>",
        "email": "<user-email>",
        "avatar_url": "<url-for-user's-profile-photo>",
        "idhash": "<unique-id-of-the-user>",
        "username": "<user-selected-id>" # If user has a username
    }
}

如果没有认证

{
    "authenticated": false,
    "providers": {
        "google": {
            "url": "<url-for-logging-in-with-the-Google-provider>"
        },
        "github": {
            "url": "<url-for-logging-in-with-the-Github-provider>"
        },
    }
}

认证流程完成后,调用者将被重定向到带有额外查询参数 jwtnext URL,其中包含认证令牌。调用者应缓存此令牌以供后续与API交互。

获取服务的权限

/auth/authorize

方法: GET

查询参数

  • jwt - 用户令牌(从 /user/check 获取)
  • service - 相关服务(例如 storage-service

返回

{
    "token": "<token-for-the-relevant-service>"
    "userid": "<unique-id-of-the-user>",
    "permissions": {
        "permission-x": true,
        "permission-y": false
    },
    "service": "<relevant-service>"
}

更改用户名

/auth/update

方法: POST

查询参数

  • jwt - 认证令牌(从 /user/check 获取)
  • username - 用户资料的新的用户名(此操作只能执行一次)

返回

{
    "success": true,
    "error": "<error-message-if-applicable>"
}

注意:尝试更新其他用户资料字段(如 email)将静默失败并返回

{
    "success": true
}

接收授权公钥

/auth/public-key

方法: GET

返回

服务公钥(PEM格式)。

服务可以使用它来验证权限令牌是否真实。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

dgp-oauth2-1.3.4.tar.gz (81.2 kB 查看哈希值)

上传时间

构建分布

dgp_oauth2-1.3.4-py3-none-any.whl (12.9 kB 查看哈希值)

上传时间 Python 3

支持者