NGINX gateway 实现OpenIDConnect RP

作者:刘宾, [email protected]
请尊重作者著作权,转载请注明出处,谢谢!


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是否存在


你可能感兴趣的:(NGINX gateway 实现OpenIDConnect RP)