Session 带有用户信息的Kong API网关会话插件

Session 带有用户信息的Kong API网关会话插件,session,api-gateway,kong,Session,Api Gateway,Kong,我正试图将上游服务的授权/身份验证抽象到香港API网关。以前,我使用express+passport处理会话。每当用户使用其凭据登录时,将创建一个会话,并将其用户信息附加到req对象(req.user) 目前,我正在使用++比较映射到容器中的文件中的用户密码(使用bycryptlua库)。客户端将发送一个带有API密钥的初始登录(用户名和密码)请求来登录,无服务器函数将比较密码散列,如果所有这些都通过了,会话将被创建 但是,我的问题是,是否有办法将用户信息存储到会话数据库中,以便我的上游服务可以

我正试图将上游服务的授权/身份验证抽象到香港API网关。以前,我使用express+passport处理会话。每当用户使用其凭据登录时,将创建一个会话,并将其用户信息附加到req对象(
req.user

目前,我正在使用++比较映射到容器中的文件中的用户密码(使用
bycrypt
lua库)。客户端将发送一个带有API密钥的初始登录(用户名和密码)请求来登录,无服务器函数将比较密码散列,如果所有这些都通过了,会话将被创建

但是,我的问题是,是否有办法将用户信息存储到会话数据库中,以便我的上游服务可以请求该信息,以确保连接到登录用户的会话在任何给定时间都有效


任何想法,即使与香港无关,也将不胜感激

在Kong上创建新会话时,可以显式提供用于标识会话的唯一密钥(默认情况下由Kong自己创建)。 当密码检查通过并且您正在香港生成会话时,您可以创建自己的唯一密钥,并在创建会话时使用该密钥

    Kong_admin = 'http://localhost:8001'

    kong_session = {'key': 'any-unique-combination'}
    #any unique combination which you would like to use for identifying the session

    user = 'test-user@dummy.com'
    
    #create a session for this dummy user using your key
    response = requests.post('%s/consumers/%s/jwt' % (Kong_admin, user),data=kong_session)

    
    #Once the session is created you can find it using
    
    resp = requests.get('%s/consumers/%s/jwt/any-unique-combination' % (Kong_admin, user))
    
    # you can use this key in your token payload so your upstream service can decrypt the 
    # payload and get this key and you can store this key in your database mapped with 
    # user during session creation.
    # with this you ll be able to decrypt any session payload , get a key and then query 
    # it on database at any point of time