用于帮助DataOne登录证书的工具
d1Login的Python项目详细描述
用于在dataone环境中进行身份验证的python帮助程序。
d1_证书库提供一些例程来帮助验证与dataone服务的交互。 身份验证需要web浏览器ui,因此不适合在无头系统上使用。基本过程是:
- 打开Web浏览器以选择身份提供程序
- 凭证将输入到选定的idp中
- 将创建证书签名请求,并从cilogon重新获取令牌信息
- 证书已签名并移动到一致的位置。
注意事项:
- 需要Web浏览器
- 假设web浏览器下载的文件位于${home}/downloads中
- 生成的证书放入${home}/.dataone/certificates
- 证书中的主题映射和组信息是静态的。请注意,证书将需要 如果需要更改用户标识映射或组成员身份,则重新生成。
安装
释放安装:
pip install -U d1login
开发安装:
git clone cd d1Login pip install -U -e .
示例
命令行应用程序将在适当的登录url处打开web浏览器。验证后,浏览器将 下载.jnlp文件。这应该放在~/downloads中。脚本将等待(最长60秒) .jnlp一旦可用,将处理该文件并请求证书。
命令行:
d1login <<browser opens, download jnlp file>> Certificate downloaded to: /Users/vieglais/.dataone/certificates/x509up_u501
作为库:
>>> import d1_certificate >>> service = d1_certificate.LOGIN_SERVICE['dev'] >>> certpath = d1_certificate.login(overwrite=True, service=service) # Browser window opens for authentication >>> print certpath /Users/vieglais/.dataone/certificates/x509up_u501 >>> d1_certificate.getSubjectFromCertFile( certpath ) {'not_after': '20151216225323Z', 'not_before': '20151216044823Z', 'status': True, 'subject': 'CN=Dave Vieglais A34511,O=Google,C=US,DC=cilogon,DC=org', 'subject_info': None}
在OSX上,证书可以导入到密钥链中,以便浏览器与经过身份验证的节点进行交互 环境例如:
CERT=/Users/vieglais/.dataone/certificates/x509up_u501 openssl x509 -outform der -in ${CERT} -out "${CERT}.der" security add-certificates "${CERT}.der"
现在打开一个浏览器(chrome或safari,firefox使用独立于keychain的证书管理) 并访问网址:
https://cn-dev.test.dataone.org/cn/v2/diag/subject
您应该在XML响应中看到您的凭据。
在Yosemite上,您不能再使用.pem格式的证书来使用curl进行身份验证 [见:http://curl.haxx.se/mail/archive-2014-10/0053.html]。相反,转换为.p12格式的证书并使用它 相反。当然,请注意,像这样在命令行中输入密码是一种安全风险,因为它将 出现在bash历史记录、日志文件等中。示例:
CERT=/Users/vieglais/.dataone/certificates/x509up_u501 openssl pkcs12 -export -in ${CERT} -out ${CERT}.p12 -passout pass:Some_Password curl -E ${CERT}.p12:Some_Password "https://cn.dataone.org/cn/v2/diag/subject"