シングルサインオン(SSO)インテグレーションガイド
標準のSSOトランザクションには、2つの技術エンティティがあります。
- アプリケーション(「クライアント」または「RP」/「SP」)。
- アイデンティティプロバイダ( IDPまたはOP)
本SSO統合ガイドでは、開発者がアプリケーション(「クライアント」)をGluuサーバなどのIDプロバイダに保護して統合するために使用できる既存のSAMLおよびOAuth 2.0クライアントソフトウェアプロジェクトのリストを提供しています。
※実装品質のばらつきが非常に大きいため、以下のクライアントソフトウェアプロジェクトのみをサポートします。
Server Side Web Apps
多くのアプリケーションはサーバーサイドです。Webページにはコンテンツが表示されますが、動的ビジネスロジックのほとんどはWebサーバー上にあります。IDPとサーバサイドWebアプリケーションを統合するため2つのデザインパターンが登場しました。
- Webサーバフィルターとリバースプロキシ
- OAuth 2.0をアプリケーションで直接活用
オプション1は、開発と運用 (DevOps)がより簡単です。
オプション2を使用すると、一元管理されたセキュリティポリシーをアプリケーション内に緊密に統合することが可能です。
Web Server Filters
Web Serverフィルタは、WebアプリケーションでSSOを実現するための実証済みのアプローチです。 Webサーバーフィルタは、HTTP要求内のトークンの存在を強制します。 トークンが存在しない場合、Webサーバーはその人をリダイレクトするか、意味のあるコードまたはメッセージをアプリケーションに返すことがあります。 (あなたのdevopsチームはこのアプローチが大好きです。 ←トル)開発メンバーはWebサーバーの設定ファイルを管理するだけです。 どのようなポリシーをどのURLに適用されるかが明確になります。
Gluuは、次のSAMLおよびOpenID Connect Webサーバーフィルタをサポートしています:
- SAML: Shibboleth SP
- OpenID Connect: Apache mod_auth_openidc, Nginx lua-resty-openidc
Client Software
クライアントソフトウェアは、アプリケーションでOAuth 2.0を活用する際に、開発者にとって手間のかかる作業を実行します。 APIを直接呼び出すことで、アプリケーションでの認証と認可の「スマートな」処理が可能になります。 たとえば、OAuth 2.0 APIを直接呼び出すと、トランザクションレベルのセキュリティをより簡単に実装できます。 このアプローチは、ユーザビリティとセキュリティにプラスの影響を与えます。
Gluuは、サーバー側のWebアプリケーションを保護して統合するために、以下のソフトウェアをサポートしています。
- oxd
Single Page Apps
シングルページアプリケーション(SPA)は、従来のWeb SSOとAPIアクセスのミックスと見なすことができます。アプリケーション自体は保護された通常のWebサイトからロードされ、Javascriptコードは別(または同じ)ドメインにあるAPIを呼び出します。 このユースケースでは、OpenID Connectの仕様は、「ブラウザ内クライアント」を念頭に置いて設計されており、トークンをSingle Page Appsに渡すための「Implicit grant type」を使用しています。
GluuはSPAを保護し、統合するために次のソフトウェアをサポートしています。
- AppAuth JS
- Gluu’s OIDC JS Client
Native Apps
ネイティブアプリとGluuサーバーを統合するには、iOS、MacOS、Android用のAppAuthライブラリをお勧めします。 AppAuthは実装言語の慣習的なスタイルに従い、それらの仕様の要求と応答を直接マッピングするよう努めています。 生のプロトコルフローのマッピングに加えて、新しいトークンでアクションを実行するなどの一般的なタスクを支援するための便利なメソッドが用意されています。
Gluuはネイティブアプリを保護し、統合するために次のソフトウェアをサポートしています:
- AppAuth iOS and macOS
- AppAuth Android
SaaS / Off-the-shelfアプリケーション
このアプリは既にSAMLまたはOpenID Connectをサポートしており、Gluu サーバーSSO用に設定するためのドキュメントを提供しており、SaaSと既製のアプリケーションをGluuサーバーと統合するのはとても簡単です。