用于JWT脱机验证的SAP CP安全客户端库
sap-py-jwt的Python项目详细描述
云sapjwt
=====
使用sapjwt验证库的当前二进制文件对sapcp客户端应用程序进行json web令牌(jwt)脱机验证。
这个项目包含jwt绑定。它还包括在xsa平台上运行的本机库。 如果你需要其他平台,请写信给作者。
平台
支持的平台:Windows Linux MacOS
此包包含一个基于cTypes的包装器,可供Python使用sapjwt库
你好世界
这个标准示例来自http://jwt.io
importsapjwtjwtver=sapjwt.jwtValidation()print("SAPJWT version : "+jwtver.getLibraryVersion())jwtver.setVerificationKey("secret")_rc=jwtver.checkToken("eyJhbGciOiJIUzI1NiIsImtpZCI6InRlc3QiLCJ0eXAiOiJKV1QifQ.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOmZhbHNlfQ.b2CDs7y56N9VWUh6wpLBdws-6omVyihJhpnBB7MdHCw")if_rc!=0:print("Validation error: "+jwtver.getErrorDescription())else:print("Validation key-Id from JWT: "+jwtver.getKeyId())print("Validation succeeded, payload from JWT: "+jwtver.getPayload())
入门
不应包含此项目,但应将sap-xssec包含为api项目。此项目为本机 JWT的验证库。 从您的项目目录中,运行(有关要求,请参见下面的内容):
fromsapimportxssec
错误情况
签名操作的标准错误是签名无效。这个错误是典型的,您应该处理 小心点!而不是致命的错误或断言。 如果您认为,它必须工作,但它不工作,那么您可以跟踪本机函数。 sapssoext库允许您设置环境变量:
- sap_ext_trc在文件系统中定义跟踪文件
- sap_ext_trl一个0到3的整数
set SAP_EXT_TRC=stdout
set SAP_EXT_TRL=3
如果在cloudfoundry或xsa中运行应用程序,则可以使用客户机命令工具cf/xs定义环境变量,请参见 https://docs.run.pivotal.io/devguide/deploy-apps/manifest.html#env-block
在cf环境中,您可以cf logs<;your app>;然后您将看到来自jwt验证的跟踪
通过PIP安装
要配置SAP PYPI注册表,您需要发出以下命令:
pip install --user sap_xssec
如果尚未配置任何SAP PYPI注册表,请使用此调用:
pip install sap_xssec
cf部署
将python代码部署到cloudfoundry执行“pip install”。软件包sap_xssec依赖于供应商的软件包,这意味着它在公共存储库中不可用。解决方案是使用本地供应商文件夹进行部署,请参见 https://docs.cloudfoundry.org/buildpacks/python/index.html#vendoring
您的应用程序应该有一个所谓的requirements.txt文件。在这个文件中,您定义了您的依赖项,例如sap_xssec(这个包包括sap_py_jwt)。因此,在推送到cf之前,您需要创建一个本地供应商文件夹,并将所有依赖的二进制文件放入该文件夹。
push命令将整个本地文件夹上载到cf,然后python构建包从vendor文件夹安装私有包。
已知问题
此项目为云平台提供二进制语言绑定。Linux x64可以用于依赖于Linux的Debian派生的Docker映像中。当前没有可用的alpine二进制文件,因为链接器不同,请参见https://www.musl-libc.org/。
许可证
版权所有(c)2019 SAP SE或SAP关联公司。保留所有权利。除非LICENSE文件中另有说明,否则此项目是根据sap示例代码许可证授权的。