如何使用 OAUTH/JWT 与 HANA 建立 Python 连接

How to Establish Python Connection with HANA using OAUTH/JWT

我们目前在 SAP HANA 的 python 连接器中使用基本身份验证。在我们当前的连接字符串中,我们使用 SQLAlchemy,它看起来像这样:

def get_engine(host_name):
    return create_engine('hana://{user}:{password}@{host_name}:{port}/HUP'.format(
        user=request.json['username'],
        password=base64.b64decode(bytes(request.json['password'], encoding='utf-8')).decode('utf-8'),
        host_name=host_name,
        port=current_app.config['HANA_PORT']
    )
    )

我们现在需要过渡到使用 HANA Oauth,因此不再需要将用户名和密码输入到连接字符串中。理想情况下,应该有一种方法可以将 JWT 输入到连接详细信息中。我在网上找不到太多真正说明如何使用 Oauth 使用 HANA 创建基于 Python 的连接器的资源。如有任何帮助,我们将不胜感激。

我是这样设置的..

使用库。 below——您需要将这些属性传递到Identity Provider(IdP) 数据库。您的 json config 通过 xs-security 将允许权限范围。

  1. 首先下载 Python: sap_xssec lib. 它应该允许你获取 JWT 令牌的属性。

  2. 其次,设置您的服务和安全

//import these lib. after downloading
from sap import xssec
from cfenv import AppEnv

// get your env.
myEnv = AppEnv()
// get your UAA service
myService = myEnv.get_service(name='<uaa_service_name>').credentials 
// now your JWT access token for
contextWithAccessToken = xssec.create_security_context(access_token, myService)

接下来配置您的 xs-security 文件

Example xs-security.json File
{
  "xsappname" : "node-hello-world", 
  "scopes"     : [ { 
                    "name" : "$XSAPPNAME.Display", 
                    "description" : "display" }, 
                   { 
                    "name" : "$XSAPPNAME.Edit", 
                    "description" : "edit" }, 
                   { 
                    "name" : "$XSAPPNAME.Delete", 
                    "description" : "delete"  } 
                 ], 
  "attributes" : [ { 
                    "name" : "Country", 
                    "description" : "Country", 
                    "valueType" : "string" }, 
                   {
                    "name" : "CostCenter", 
                    "description" : "CostCenter", 
                    "valueType" : "int" } 
                 ], 
  "role-templates": [ { 
                       "name"                : "Viewer", 
                       "description"         : "View all books", 
                       "scope-references"    : [ 
                                               "$XSAPPNAME.Display" ], 
                       "attribute-references": [ "Country" ]  
                      }, 
                      {
                       "name"                : "Editor", 
                       "description"         : "Edit, delete books", 
                       "scope-references"    : [ 
                                               "$XSAPPNAME.Edit", 
                                               "$XSAPPNAME.Delete" ], 
                       "attribute-references" : [ 
                                                "Country", 
                                                "CostCenter"] 
                      } 
                     ] 
}

// 为您的环境准备好用户值。 XS_APPLICATIONUSER$env.user.value

  1. 设置你@sap/hana-client调用 随着 connection.session.XS_APPLICATIONUSER = <JWT TOKEN>;

  2. 不要忘记设置 sap-jwt/py-jwt 库来验证 jwt 令牌

刚设置

USE_SAP_PY_JWT = true

大功告成!