NGINX gateway 實現(xiàn)OpenIDConnect RP

作者:劉賓, thomas_liub@hotmail.com
請尊重作者著作權(quán),轉(zhuǎn)載請注明出處,謝謝!


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. 授權(quán)碼校驗
    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. 后續(xù)訪問
    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
    設(shè)置session metatable
    self.opened = true
    getcookie(self)
    根據(jù)cookie讀取session數(shù)據(jù)
    self.present = true
    return self, true
    self.started = true

session.opened:表示當前請求session開啟狀態(tài)
session.present: 表示當前用戶session是否存在


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容