EVE JWT身份验证

eve-auth-jwt的Python项目详细描述


https://img.shields.io/pypi/v/eve-auth-jwt.svghttps://travis-ci.org/rs/eve-auth-jwt.svg?branch=master

用于Eve的OAuth 2 JWT令牌验证模块

安装

要安装eve auth jwt,只需:

$ pip install eve-auth-jwt

在EVE初始化时:

from eve import Eve
from eve_auth_jwt import JWTAuth

app = Eve(auth=JWTAuth, settings=SETTINGS)

配置

此模块从EVE设置读取其配置。下面是新指令的列表:

  • JWT_SECRET(必需):定义用于对令牌进行解/编码的symetric secret令牌密钥(异步密钥支持是TODO)
  • JWT_ISSUER(必需):定义必需的令牌颁发者(iss声明)。
  • JWT_AUDIENCES:定义接受的访问群体列表(audclaim)如果没有提供,则只接受没有观众集的令牌资源级别audiences参数也可用。
  • JWT_ROLES_CLAIM:定义角色的声明名称如果设置了,eve角色检查将被激活,并且任何设置了allowed_roles的资源都需要在定义的令牌声明中包含这些角色。
  • JWT_SCOPE_CLAIM:定义作用域的声明名称。如果set和令牌具有包含字符串viewer的同名声明,则只授予GETHEAD方法。所有其他值都将被忽略并添加到前缀为scope:的公开角色列表中。

阅读角色

如果授予访问权限,则身份验证模块将通过get_authen_roles()get_authen_claims()方法公开角色和令牌声明。您可以从事件挂钩访问这些值,如下所示:

def my_hook(...)
    resource_def = app.config['DOMAIN'][resource_name]
    auth = resource_def['authentication']
    if 'somerole' in auth.get_authen_roles():
        # grant some finer access

保护自定义路由

jwt授权可以应用于任何使用@requires\u令牌包装器的自定义路由。此批注将只提供访问群体和角色访问控制用户级访问必须手动写入。

访问控制示例:

from eve_auth_jwt import requires_token, get_request_auth_value

@app.route('/my_resource/download', methods=['GET'])
@requires_token(audiences=['myAudience'])
def csv_download():
    # Allows all users with myAudience to access download
    account_id = get_request_auth_value()
    if check_user(account_id):

        abort(401)

    return generateCSV(account_id)

myadmin访问控制示例:

from eve_auth_jwt import requires_token

@app.route('/admin/my_resource/download', methods=['GET'])
@requires_token(audiences=['myAudience'], allowed_roles=['myAdmin'])
def csv_download():
    account_id = request.args.get('account_id', None)
    return generateCSV(account_id)

访问解析的JWT令牌值

已解析的可验证的令牌值存储在< > >烧瓶中,但自定义函数有助于读取值。这些值只有在JWT令牌完整性检查和用户授权之后才可用

访问parse jwt令牌字段的示例:

from eve_auth_jwt import get_request_auth_value, get_authen_claims, get_authen_roles

def my_fn():
    # Request authentication value as a str
    account_id = get_request_auth_value()

    # JWT claims as a dict[str]
    payload = get_authen_claims()

    # Roles as arr[str]
    roles = get_authen_roles()

许可证

所有源代码都是根据MIT License授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么只为字符数组重载println方法,而不为字符串、整数等其他数组重载?   java将快速线程返回到池中,而不是等待慢速线程   创建jar文件时java SwingWorker不工作   java如何将依赖注入RabbitListener   java如何在gradle任务中通过scp复制目录?   java在MySql数据库中创建表时,遇到NullPointerException   java HTTP Status 500 Servlet执行引发异常   在JAVA中对arraylist使用继承时出错   java PowerMockito未完成存根异常   如果没有错误/警告增加到某个极限,java是否停止在eclipse中构建项目或使用maven?   java Robolectric如何测试DateFormat。getBestDateTimePattern()   google云平台GCP数据存储Java API,构建一个空值实体   VerifyListener和FocusListener之间的java冲突   安卓是否可以在Java中的另一个方法内部强制调用一个方法?   JavaWindows7、JDK1.8、SpringBoot应用程序JAR在方法安全性方面占用了大量时间。getProviders()返回   Bean提供程序的java错误消息   java Slick动画每帧必须有一个持续时间   java无法在Trie中设置isLeaf标志   java为什么JVM不能创建包含main方法的类的对象,以便从该类访问main方法,如果它具有该类的名称?   java Apache Camel+CXF端点身份验证