突然「Webアプリを認証連携(SAML/OpenID Connect)対応して」と言われたら
2022-05-31 - 星野 康
0. はじめに
上司やお客様から突然「Webアプリを認証連携(SAML/OpenID Connect)対応して」と言われた場合、どうしますか?いずれ弊社(OSSTech株式会社)のような専門ベンダに連絡するとしても、その前に、ベースの知識を得ておくためにWeb上で情報を探してみるのではないでしょうか。
認証連携(SAML/OpenID Connect)の仕様については既に多くのウェブページで解説されてますが、実現のための検討観点についてはあまり情報がないかも…という印象です。
というところで本記事では、Webアプリを認証連携(SAML/OpenID Connect)対応されるエンジニアの皆様を意識し、検討時にベース知識を得るための情報源となるべく執筆します。
もし記事をお読みくださったら、ベンダ候補として弊社も加えていただけますと嬉しいです。
1. そもそも認証連携(Federation)とは?
「認証サーバによってユーザが認証されたら、アプリとしても認証済みとして扱うよう連携する」、ということです。
認証連携のための標準仕様として SAML や OpenID Connect があり、既に広く普及してきています。
1つの認証サーバに対して複数のアプリを認証連携で繋げた場合、そのシステム全体はシングルサインオン環境となります。シングルサインオンの文脈で既に解説している記事シリーズを書いていますので、必要に応じてご参照ください。
(突然「シングルサインオン(SSO)を検討して」と言われたら 第1回、第2回、第3回、第4回、第5回)
Webアプリを認証連携対応することで、大きくは以下のようなメリットを享受できます。
# | 項目 | 説明 |
---|---|---|
1 | 認証の強化 | アプリ自体で認証方式を様々用意しなくても、連携先の認証サーバを利用することで、多要素認証などの強固な認証を利用できる。 |
2 | 販売機会増 | 標準仕様(SAML, OpenID Connect)での認証連携接続を前提としたシングルサインオン環境が普及しており、これが受注要件であった場合に販売機会を得られる。 |
2. 検討項目
認証連携対応を実施すると決まったら、どのように検討を進めたら良いでしょうか。
大枠としては、以下のような項目を検討する必要があります。検討が難しい項目もあるかもしれませんが、ざっくりとでも予め検討しておくと、その後弊社のような専門ベンダとの会話や詳細検討がスムーズに進むと思います。
# | 項目 | 説明 |
---|---|---|
1 | どちらの標準仕様にするか | 「認証連携先の認証サーバがどちらの標準仕様に従っているか」、が一番大きな要因になるかと思います。 どちらかと言えば、エンタープライズ系や学術系は SAML が多く使われ、コンシューマ系は OpenID Connect が多く使われる印象です。両方とも対応するという選択肢ももちろんあります。 |
2 | 認証サーバからどの情報を受け取りたいか | ・認証サーバとして、どのような形式でどのような値をアプリ側に渡すことができるか。 ・アプリとして、どのような形式でどのような値を受け取りたいか。 |
3 | その他、アプリ-認証サーバ間連携において特別に期待する動作があるか | 例として以下のようなものがあります。 ・シングルサインオン動作ではなく毎度認証したいか ・シングルログアウトをしたいか ・アプリ側から認証サーバに対して認証方式を指定したいか ・上記まで含め、標準仕様のどの範囲まで実現するか。 ・etc... |
3. 実現方法
実現方法のバリエーションとしては、大別して以下のようなものがあります。
# | 項目 | 説明 |
---|---|---|
1 | 自社開発 | SAML や OpenID Connect のクライアント側機能を自社で開発してしまう。費用の面からも安全性の面からも、正直お勧めしません。 |
2 | 各言語のライブラリ利用 | 各プログラミング言語にて、SAML や OpenID Connect のクライアント側機能がライブラリとして提供されていることがあり、Webアプリの言語と適合するものがあれば利用できます。 |
3 | ソフトウェア/モジュール利用 | 弊社からも提供しています mod_auth_mellon や mod_auth_openidc のようなソフトウェア/モジュールを利用する形です。Webアプリの前段に配備することで、Webアプリの言語に依存することなく、ほぼほぼ設定のみで実現することができます。 |
4. おわりに
Webアプリの認証連携を検討することになった場合の情報源となるべく、そもそも認証連携がどのようなものであるか、主な検討項目として何があるか、実現方法のバリエーションとしてどのようなものがあるかを記しました。
全てを予め検討することは難しいかもしれませんが、弊社のような専門ベンダと会話する前の全体像理解や初期検討の一助としていただけましたら幸いでございます。