Skip to main content

{{ 描述 }}

项目描述

DataHQ 认证服务

构建状态

通用 OAuth2 身份验证服务和用户权限管理器。

快速开始

克隆 repo 并安装

make install

运行测试

make test

运行服务器

python server.py

环境变量

  • PRIVATE_KEY& PUBLIC_KEYPEM 格式的 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: 哪些权限提供程序可用。提供者标识符的;分隔列表。每个提供者标识符都采用 的形式[alias:]provider,其中provider是导出get_permissions(service, userid)函数的 Python 模块的名称。
  • INSTALLED_EXTENSIONS:已安装扩展的列表。;分隔列表- 导出一个extension或所有这些函数的 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>"
        },
    }
}

身份验证流程完成后,调用者将被重定向到next带有额外查询参数的 URL, jwt其中包含身份验证令牌。调用者应缓存此令牌以便与 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 格式的公钥。

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

项目详情


下载文件

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

源分布

dhq-auth-0.1.6.tar.gz (27.3 kB 查看哈希

已上传 source

内置分布

dhq_auth-0.1.6-py3-none-any.whl (11.4 kB 查看哈希

已上传 py3