Upgrade to Pro — share decks privately, control downloads, hide ads and more …

VPNの認証をCIBAでやってみた

okzk
October 27, 2021
530

 VPNの認証をCIBAでやってみた

okzk

October 27, 2021
Tweet

Transcript

  1. OpenID CIBA Flow CIBA(Client Initiated Backchannel Authentication) Decoupled flow に分類される認証/認可のフロー

    ◦ 消費デバイス(Consumption Device) OIDC 認証リクエストを投げる側 ◦ 認証デバイス(Authentication Device) OIDC 認証リクエストを承認するデバイス
  2. goのライブラリ使用例 クライアント初期化コード token, err := client.Authenticate(ctx, ciba.LoginHint("alice")) token, err :=

    client.Authenticate(ctx, ciba.LoginHint("alice")) client := ciba.NewClient( "https://example.com", // issuer "https://example.com/bc-authn", // backchannel_authentication_endpoint "https://example.com/token", // token_endpoint "openid", // scope "sample_client", // client_id "xxxxxxxxxxxxxxxxxxxxx", // client_secret )
  3. RADIUSでやってみよう • Remote Authentication Dial In User Service • RFC2865

    他で標準化 • UDPベースのシンプルな認証サービスのプロトコル • もともとはダイアルアップ向け • 現在でも、様々なアプライアンスにて認証サービスとして利用 可能 token, err := client.Authenticate(ctx, ciba.LoginHint("alice"))
  4. 起動はdocker run token, err := client.Authenticate(ctx, ciba.LoginHint("alice")) token, err :=

    client.Authenticate(ctx, ciba.LoginHint("alice")) docker run -d -p 1812:1812/udp -p 1813:1813/udp \ -e RADIUS_SECRET="..." \ -e CIBA_ISSUER="https://example.com" \ -e CIBA_AUTHN_ENDBPOINT="https://example.com/backchannel/authn" \ -e CIBA_TOKEN_ENDBPOINT="https://example.com/token" \ -e CIBA_CLIENT_ID="..." \ -e CIBA_CLIENT_SECRET="..." \ okzk/oidc-radius
  5. その他のVPN • IPSec + CIBA, OpenVPN + CIBA - 弊社内限定公開でPoC中

    - ドッグフーディングが不十分なため、社外には非公開 • コードを見た弊社社員がWireGuardでも実装 https://speakerdeck.com/kurochan/wireguardtoopenid-connectfalseli an-xi-wogoteshi-zhuang-sitemita