munge的python接口

pymunge的Python项目详细描述


pymunge是munge的c api的python包装器,名为 利布芒格。pymunge提供要创建的函数和类 使用munge验证凭证,并使用 咀嚼上下文。

Munge(Munge Ud'n'Gid商场,https://dun.github.io/munge/) 是用于创建和验证凭据的身份验证服务 设计为可在HPC群集环境中使用的高可扩展性。

pymunge官方存储库:https://github.com/nomadictype/pymunge

PYPI项目页面:https://pypi.python.org/pypi/pymunge

API引用:https://pymunge.readthedocs.io/en/latest/

安装说明

要求:

  • Python3.4或更高版本(或Python2.7中的'Enum34'包)。
  • 咀嚼0.5.x或更高。
  • 一个被屏蔽的守护进程必须在同一台计算机上运行 使pymunge能够创建和验证凭据。

确保满足上述所有要求。之后, 有几种可能的方法可以继续:

  • 要从pypi安装pymunge,请运行以下命令(最好是 在虚拟机中):

    python3 -m pip install pymunge
    
  • 或者,您的操作系统发行版可能包含pymunge作为包, 名称为pymunge、python3 pymunge或python pymunge。

  • pymunge也可以直接使用而无需安装。只要确保 python可以找到pymunge包(例如 pymunge包到pythonpath的父目录 环境变量)。

入门/教程

本快速教程介绍如何使用pymunge api。如果你愿意, 您可以在交互式python 3会话中继续;只需复制 前面有>;的所有代码。

首先,导入包:

>>> import pymunge

对凭证进行编码(创建)和解码(验证)的最简单方法 使用pymunge.encode()pymunge.decode()函数。 例如:

>>> cred = pymunge.encode(b"some payload")
>>> cred
b'MUNGE:AwQDAA...'

凭证cred现在可以发送到其他进程进行解码 (通过插座或其他IPC机制)-这是责任 在使用pymunge的程序中,pymunge不提供任何函数 做这个!出于测试的目的,您还可以将凭证导入 手工解谜程序。为了简化本教程,让我们 在同一过程中直接解码凭证:

>>> payload, uid, gid, ctx = pymunge.decode(cred)
>>> payload
b'some payload'

pymunge.decode()返回4个值:封装的负载 在凭证中,创建 凭证和咀嚼上下文。可以将此上下文检查为 获取有关凭据的其他信息:

>>> ctx.cipher_type
<CipherType.AES128: 4>
>>> ctx.encode_time
1514469923
>>> ctx.ttl
300
>>> ctx.uid_restriction
-1

(也可以尝试运行帮助(ctx)查看所有属性的列表 上下文可以有。)

可以在现有的MunGE中进行编码和解码。 上下文。这对于自定义用于 对凭证进行编码:

>>> with pymunge.MungeContext() as ctx:
>>>     ctx.uid_restriction = 0  # allow only root to decode the credential
>>>     cred = ctx.encode(b"some other payload")

类似地,mungecontext.decode()可用于 现有上下文。

基本教程到此结束。一组相似的例子 在与pymunge一起分发的文件pymunge_example.py中提供。

作者

pymunge是由nomadictype(https://github.com/nomadictype/)编写的。

许可证

版权所有(c)2017-2018 nomadictype<;nomadictype at tutanota.com>;

与libmunge一样,pymunge也拥有gpl-3和lgpl-3的双重许可。 有关详细信息,请参见license.txt。

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

推荐PyPI第三方库


热门话题
java Android首选项相同getPreference()值的不同数据   字符串如何在Java中连接两个列表中的单词   安卓 Java Socket编程:检测客户端和服务器是否连接   使用JTextField的java无法将值转换为int   在java中,如何在不通过超级构造函数设置的情况下将消息设置为自定义异常类   用于标识属性值的java正则表达式模式   Android中的java不可见谷歌地图   java正确取消启动ExecutorService的JavaFX任务   在非活动java类中使用安卓的融合位置提供程序,并在主活动类中获取经度和纬度   spring为什么我的大摇大摆不能用springboot在java中工作?   java JSF(2.2)ViewScope在Weblogic 12.2.1.2和JDK 8上使用Spring 4.3.7(在Mac OS和Docker Oracle Linux环境上)   java如何用一个按钮提高计时器速度   java如何检查字符是否是元音?   注册表引用了不存在的Java运行时环境安装或运行时已损坏错误   来自ResultSet java的mysql getDateTime   maven LanguageTool Java API是否具有“无用”依赖关系?   twitter api身份验证的java Trycatch问题   java在Apache Struts 1.1中是否可以显式白名单?   安卓致命异常:主java。lang.RuntimeException:被问及未知片段