Digital Identity 技術

Authentication = 「認証」(本人確認), Authorization = 「認可」(リソースへのアクセス許可). Authorization Endpoint は「認可エンドポイント」. Authentication Request は「認証要求」.

Webサービスその他での伝統的なユーザID + パスワードによる認証では、当然にそのサービスの認可を兼ねることが通常なので、用語が混乱しやすい。Open ID Connect などの技術は、本人確認だけを別サーバに分離する。

OpenID Connect

ソフトウェア

別セクション.

omniauth-openid-connect 'renewed'

記事

OpenID Connect 'response_type' and flows

Sample program: openid_connect_sample

テストのために, nov/openid_connect_sample を Ruby on Rails 4.2対応にしたものを用意した。OpenID Provider (OP) と Relying Party (RP) の両方を実装。

'openid_connect' パッケージのバグ修正を含む。

wip: Rails 6.1 に修正中。

Sample program: Implicit Flow RP sample

ネイティブアプリなど client_secret を安全に保存できない状況では, Implicit Flow を使わなければならない。

Rails アプリではサーバサイドの Authorization Code Flow で問題ないが、あえて Implicit Flow を実装したサンプル。

netsphere-labs/openid-connect-implicit-flow-rp-sample: OpenID Connect (oidc) - Relying Party (RP) sample. The Implicit Flow, Ruby 3.0 + Ruby on Rails 6.1. Tested Google and Yahoo JP.

Rails 6.1.

Links

OAuth 2.0 + OpenID Connect のフルスクラッチ実装者が知見を語る OpenID Provider (OP; IdP) を作るのは、非常に難しい。

エンタープライズITでのOpenID Connect利用ガイドライン Just-In-Time User Provisioning / Identity Provisioning

公開鍵基盤 (PKI)

CA階層, 2/3 tierと基礎 CA.plスクリプトの解説はこちら。

2 tierプライベート認証局を作る

プライベート認証局でSSLサーバ証明書, nginxでの TLS設定

SSLクライアント証明書でユーザ認証 (nginx)

S/MIME @todo

コード署名 (Code signing) Windows環境 (UWP) では, バイナリに署名しないと実行できなくなっている.