跳转到主要内容

Pyramid的Google Cloud Identity-Aware Proxy身份验证策略

项目描述

============================================================
Google Cloud Identity-Aware Proxy身份验证策略的Pyramid实现
============================================================

此软件包实现了与Google Cloud的`Identity-Aware Proxy <https://cloud.google.com/iap>`兼容的Pyramid身份验证策略。


配置
=============

配置您的Identity-Aware Proxy后,从其设置中获取*签名头JWT受众*(详细说明请参阅`使用签名头保护您的应用程序 <https://cloud.google.com/iap/docs/signed-headers-howto>`。)

要启用Pyramid应用程序中的JWT支持

.. code-block:: python

from pyramid.config import Configurator
from pyramid.authorization import ACLAuthorizationPolicy
from pyramid_iap import JWTClaimAuthenticationPolicy

def main()
config = Configurator()
# Pyramid需要一个激活的授权策略。
config.set_authorization_policy(ACLAuthorizationPolicy())
# Identity-Aware Proxy的签名头JWT受众。
audience = "/projects/123/global/backendServices/456"
# 启用JWT身份验证。
config.include('pyramid_iap')
config.add_iap_jwt_claims(audience)
config.set_authentication_policy(JWTClaimAuthenticationPolicy())

默认情况下,用户ID是JWT令牌的"sub"声明(例如:"accounts.google.com:123456"。要使用"email"声明(例如:"test@example.com"),请指定

.. code-block:: python

config.set_authentication_policy(JWTClaimAuthenticationPolicy(userid_claim="email"))


设置
========

有一些标志指定了如何验证令牌。
您可以在您的.ini文件中设置此标志,或者直接传递/覆盖它们到`config.add_iap_jwt_claims()`函数。

+--------------+------------------+---------------+---------------------------------------------+
| 参数 | ini 文件条目 | 默认值 | 描述 |
+==============+==================+===============+=============================================+
| audience | iap.audience | | 验证过的 token 受众(必需。) |
+--------------+------------------+---------------+---------------------------------------------+


不常用设置
-----------------

如果您在 Google Cloud IAP 后运行,则不太可能需要这些设置。

+--------------+-----------------+---------------+--------------------------------------------+
| 参数 | ini 文件条目 | 默认值 | 描述 |
+==============+=================+===============+============================================+
| public_key_url | iap.public_key_url | https://www.gstatic.com/iap/verify/public_key | 用于验证 token 签名的密钥的 URL。 |
+--------------+-----------------+---------------+--------------------------------------------+
| algorithm | iap.algorithm | ES256 | 哈希或加密算法 |
+--------------+-----------------+---------------+--------------------------------------------+
| leeway | iap.leeway | 0 | 允许 token 过期多少秒后才拒绝。 |
+--------------+-----------------+---------------+--------------------------------------------+
| http_header | iap.http_header | x-goog-iap-jwt-assertion | 用于 tokens 的 HTTP 标头。 |
+--------------+-----------------+---------------+--------------------------------------------+
| auth_type | iap.auth_type | JWT | 在授权标头中使用的身份验证类型。对于其他 HTTP 标头不使用。 |
+--------------+-----------------+---------------+--------------------------------------------+


与 pyrmid_jwt 的区别
===========================

本包受到 `pyramid_jwt <https://pypi.ac.cn/project/pyramid_jwt/>` 的启发,并力求在可能的情况下保持兼容。

* 自动从 ``public_key_url`` 获取公钥。

* 由于身份感知代理负责颁发令牌,因此 ``create_jwt_token`` 请求方法不可用。

* ``add_iap_jwt_claims`` 配置方法没有配置任何身份验证策略,以提供给使用 ``pyramid_multiauth`` 的用户更多灵活性。


变更
=======

0.1 (2019-02-14)
----------------

* 初次发布

项目详情


下载文件

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

源代码分发

pyramid_iap-0.1.tar.gz (5.4 kB 查看哈希值)

上传时间 源代码

构建分发

pyramid_iap-0.1-py3-none-any.whl (6.0 kB 查看哈希值)

上传时间 Python 3

由以下机构支持