该软件实现了python世界的mod_auth_pubtkt认证。

auth_pubtkt的Python项目详细描述


票证创建

导入Nesseary模块:

>>> from M2Crypto import RSA
>>> import auth_pubtkt
>>> import auth_pubtkt.tests
>>> import os.path
>>> import time, datetime

从测试包加载RSA私钥:

>>> privkey_path = os.path.join(os.path.dirname(auth_pubtkt.tests.__file__), 'rsa_priv.pem')
>>> privkey = RSA.load_key(privkey_path)

将到期时间设置为2011/01/01 00:00

>>> validuntil = int(time.mktime(datetime.datetime(2011, 1, 1).timetuple()))

为用户“john”生成票证:

>>> ticket = auth_pubtkt.create_ticket(privkey, 'john', validuntil, tokens=['su'])
>>> ticket
'uid=john;validuntil=1293814800;tokens=su;sig=YuM/RL8ub+XMb0ZTTlFYF6ehwRV8SnKx+TLj/syZmVx1ncR4QD58OMdRkmdmDCY9sdsoivcf+ACRCRX19nmEc5Ba+182FyRKC8bGL51GwPs+lMgaIaXxvhSvRbl/00sTWny+XEv1fEQDSc5tw3/ug6/YA9xt2wywUX1+hxfWQ5U='

中间件

>>> import urllib
>>> pubkey_path = os.path.join(os.path.dirname(auth_pubtkt.tests.__file__), 'rsa_pub.pem')
>>> pubkey = RSA.load_pub_key(pubkey_path)
>>> def test_app(environ, start_response):
...    for key in sorted(environ.keys()):
...        print '%s: %s' % (key, environ[key])
>>> app = auth_pubtkt.AuthPubTKTMiddleware(test_app, pubkey)
>>> env = {}
>>> env['REMOTE_ADDR'] = '192.168.1.10'
>>> env['REQUEST_METHOD'] = 'GET'
>>> env['HTTP_COOKIE'] = 'auth_pubtkt="%s"' % urllib.quote(ticket)
>>> app(env, lambda status, start: None)
AUTH_TYPE: cookie
HTTP_COOKIE: auth_pubtkt="uid%3Djohn%3Bvaliduntil%3D1293814800%3Btokens%3Dsu%3Bsig%3DYuM/RL8ub%2BXMb0ZTTlFYF6ehwRV8SnKx%2BTLj/syZmVx1ncR4QD58OMdRkmdmDCY9sdsoivcf%2BACRCRX19nmEc5Ba%2B182FyRKC8bGL51GwPs%2BlMgaIaXxvhSvRbl/00sTWny%2BXEv1fEQDSc5tw3/ug6/YA9xt2wywUX1%2BhxfWQ5U%3D"
REMOTE_ADDR: 192.168.1.10
REMOTE_USER: john
REMOTE_USER_DATA:
REMOTE_USER_TOKENS: su
REMOTE_USER_TOKENS_LIST: ['su']
REQUEST_METHOD: GET
auth_pubtkt.ticket_fields: {'tokens': ['su'], 'validuntil': 1293814800, 'uid': 'john'}

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

推荐PyPI第三方库


热门话题
java本机方法的源代码可用吗?   java如何使父方法抛出异常?   java Android以编程方式设置不同屏幕大小/密度的布局   java如何使用一个变量来管理所有客户端请求   java输入一个txt文件,每行有一组数字   json java从jsonobject获取jsonarray错误   java将一个(WAV)写入一个文件只会说一个单词(最后一个单词)   java Telnet忽略原始字节   proguard java。运行桌面应用程序时出现lang.VerifyError   java用左键移动JLabel?   java如何在jText区域验证选项卡?   文件服务器客户端Javasocket编程中的字符串搜索   java省略了JSTL中的最后一个逗号<c:out>   java如何找到if或else代码已执行的次数?   java JavaScript WebSocket send()方法未执行   浮点数声明上的java标识符预期错误   java这是指二进制搜索算法吗?   编译mod at:reobfJar java时的minecraft问题。util。拉链ZipException:重复条目   java检测特定的震动运动(如图所示:D)