NGINX gateway 实现OpenIDConnect RP

作者:刘宾, thomas_liub@hotmail.com
请尊重作者著作权,转载请注明出处,谢谢!


Gateway Flow

  1. 第一次登陆
    access_resty.authenticate(opts)
    openidc.authenticate(opts)
    session = session.start()
    openidc.openidc_authorize(opts,session)
    session.start(session)
    session.data.original_url = target_url
    session.data.state = state
    session.data.nonce = nonce
    session.save(session)

  2. 授权码校验
    access_resty.authenticate(opts)
    openidc.authenticate(opts)
    session = session.start()
    openidc.openidc_authorization_response(opts, session)
    session.start(session)
    session.data.user = user
    session.data.id_token = id_token
    session.data.enc_id_token = json.id_token
    session.data.access_token = json.access_token
    session.save(session)

  3. 后续访问
    access_resty.authenticate(opts)
    openidc.authenticate(opts)
    session = session.start()
    openidc.openidc_call_userinfo_endpoint(opts, session)

4.登出
access_resty.authenticate(opts)
openidc.authenticate(opts)
session = session.start()
openidc.openidc_logout(opts, session)

  1. 会话start
    session.start(opts)
    如存在,直接返回
    session.open(opts)
    如存在,直接返回
    session.new()
    如存在,直接返回
    初始化新的session
    设置session metatable
    self.opened = true
    getcookie(self)
    根据cookie读取session数据
    self.present = true
    return self, true
    self.started = true

session.opened:表示当前请求session开启状态
session.present: 表示当前用户session是否存在


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容