pam模块使用hotp令牌对用户进行身份验证。

libpam_hotp的Python项目详细描述


libpam hotp是一个pam(可插入认证模块)模块 在python中使用生成的otp(一次性密码)对用户进行身份验证 使用hotp算法。

一。安装

libpam hotp依赖于打包到所有主要发行版中的libpam python。 这个模块已经用Python2.6进行了测试,也许它也可以用2.5进行测试, 当然还有2.7版本。

安装依赖项后,可以将pam_hotp.py放入 /lib/安全目录。

下一步是设置pam,并创建一个包含所有令牌种子的文件。

2.pam的配置

libpam hotp使用libpam python,后者实际上是被调用的模块 因此,对于pam,您的规则行如下:

auth [POLICY] pam_python.so pam_hotp.py [OPTIONS]

可用选项有:

  • file: path to file that store user login - secret seeds mapping (default to /etc/hotp).

示例:

auth sufficient pam_python.so pam_hotp.py file=/etc/hotp_ssh

注意:本模块只提供auth mecanism。

三。种子文件:

种子文件存储用户登录名和机密种子代码之间的映射 用户的令牌。

此文件的每一行都是一个关联,每个字段由 “:”字符。前三个字段是必需的:

  • User login
  • Secret seed code (encoded in hexadecimal form)
  • The number of seconds for a period (see your token datasheet)

您可以添加两个附加字段:

  • The maximum allowed number of drift periods
  • An hash, used to prompt an additionnal password to the user.

散列用salt编码,格式如下:salt$hash, 哈希函数是sha1(concat(password,salt))。

示例:

下面是一个完整的用户stallman示例,带有一个标记周期 30秒,最大漂移3个周期,以及附加密码 “理查德”:

stallman:11223344556677889900AABBCCDDEEFF:30:3:6jsd3$1b6a67161e1cca2b1cd014c59b5bc907435cf8e7

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

推荐PyPI第三方库


热门话题
JavaMaven在试图定义模块时不将EJB识别为项目的依赖项   oracle如何将Java SQL数组作为参数传递给JPA本机查询?   Java解析带有整数和字符串的文本文件   客户端的java使用。在CXF Rest客户端中重置   Java:通过ID调用类   java如何在MapBox Android SDK上使用FitBounds?   java sparkjava:从InputStream将PNG作为base64加载   初始化后JScrollPane+JTree显示的java问题   java htmlunit单个测试通过,但在测试套件中运行失败   为什么java常量声明为静态的?   安卓将值从activity传递到fragment给出错误java。lang.NullPointerException   java如何使用POI设置空白excel单元格   javascript Cordova上下左右按钮   java所需字符串“contactID”参数不存在   java NoClassDefFoundError和其他引用Google Maps Android API实用程序时出现的错误   macos用Java代码打开下载的JAR文件   java扩展RoboActivity产生ClassNotFoundException   java如何使用中断通道下载文件?(NIO)