用于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示例代码许可证授权的。

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

推荐PyPI第三方库


热门话题
datetime如何使用JodaTime在Java中设置时间属性   java固定算法的性能时间   java如何从JMenu中获取所选项以更改文本区域的文本颜色?   java配置单元UDF传递数组<string>作为参数   javaapachebeam和BigQuery   java与PrintWriter之间的差异。printf和PrintWriter。格式方法   继承如何处理按Java版本更改的导入,以及在多个版本上编译   xml java。lang.noClassDefFoundant生成错误   java如何使用包含映射的JSON发送POST请求?   java如何在任何应用程序的JAR文件中绑定MySql数据库?   Java脚本解释器   sslhttpclientjava。网SocketException:未实现未连接的socket   java如何为Android应用程序创建类似于Cron作业的东西   java JButton+radiobox+复选框   java内存管理将文件写入内存   java这是计算对象实例的有效方法吗?   用于死锁情况的java代码?   JavaSpring容器作为新实体插入,而不是存储在表中