[解決済み] SSOはCASかOAuthか?
質問
を使うべきでしょうか? CAS プロトコルか OAuth + シングルサインオンを実現するための認証プロバイダです。
シナリオの例
- ユーザーが保護されたリソースにアクセスしようとしたが、認証されていない。
- アプリケーションは、ユーザーをSSOサーバーにリダイレクトする。
- 認証された場合、ユーザーはSSOサーバーからトークンを取得する。
- SSOは元のアプリケーションにリダイレクトします。
- 元のアプリケーションは、SSO サーバーとトークンを照合する。
- トークンに問題がなければ、アクセスが許可され、アプリケーションはユーザーIDを知ることができます。
- ログアウトを実行すると、接続されているすべてのアプリケーションから同時にログアウトされる(シングルサインアウト)。
私の理解では、それこそCASが発明された目的です。CASのクライアントが認証サービスを利用するためには、CASプロトコルを実装する必要があります。今、私はクライアント(消費者)サイトでCASを使うかOAuthを使うか迷っています。OAuthはCASのその部分を置き換えるものなのでしょうか?新しいデファクトスタンダードであるOAuthを優先すべきなのか?ユーザー名/パスワード、OpenID、TLS証明書...といった様々な方法をサポートするCASの認証部分を簡単に使える(Sun OpenSSOではない!)代替手段はあるのでしょうか?
コンテキスト
- 異なるアプリケーションは、SSOサーバーの認証に依存し、セッションのようなものを使用する必要があります。
- アプリケーションはGUIウェブアプリケーションまたは(REST)サーバーとすることができる。
- SSOサーバーはユーザーIDを提供しなければなりません。これは、ロール、電子メールなどのユーザーに関する詳細情報を中央のユーザー情報ストアから取得するために必要なものです。
- シングルサインアウトが可能であること。
- ほとんどのクライアントはJavaまたはPHPで書かれています。
私はちょうど WRAPを発見 OAuthの後継となる可能性があります。これは、Microsoft、Google、Yahooによって指定された新しいプロトコルです。
補遺
OAuthは認証のために設計されたものではないことを知りました。SSOの実装には使えますが、OpenIDのようなSSOサービスとの組み合わせに限られます。
OpenIDは、新しいCASのような気がします。CASにはOpenIDにない機能(シングルサインアウトなど)もありますが、特定のシナリオで足りない部分を追加するのはそれほど難しくはないはずです。OpenIDは広く受け入れられており、アプリケーションやアプリケーションサーバに統合するのが良いと思う。CASもOpenIDをサポートしていることは知っていますが、OpenIDがあればCASは不要だと思います。
どのように解決するのですか?
OpenIDはCASの「後継」でも「代替」でもなく、意図も実装も異なるものです。
CAS 一元化 の認証を行います。すべての(おそらく内部の)アプリケーションで、ユーザーに1つのサーバーへのログインを求める場合に使用します(すべてのアプリケーションが1つのCASサーバーを指すように設定されます)。
OpenID 分散化 の認証を行います。もしあなたのアプリケーションが、ユーザーが望む認証サービスにログインするのを受け入れたいなら、これを使いましょう (ユーザーはOpenIDサーバーのアドレスを提供します - 実際、'username'はサーバーのURLとなります)。
上記のいずれも、(拡張やカスタマイズをしない限り)認可を処理しません。
OAuthは認可を処理しますが、従来の'USER_ROLESテーブル'(ユーザーアクセス)の代わりではありません。サードパーティの認可を処理します。
例えば、アプリケーションをTwitterと連携させたいとします。ユーザーがデータを更新したり、新しいコンテンツを投稿したりすると、自動的にツイートするように許可することができます。ユーザーの代わりにサードパーティのサービスやリソースにアクセスしたい場合、ユーザーのパスワードを取得する必要はありません(これは明らかにユーザーにとって安全ではありません)。アプリケーションがTwitterにアクセスを求めると ユーザー Twitterを通じて)承認すると、アプリがアクセスできるようになります。
つまり、OAuthはシングルサインオンのためのものではありません(CASプロトコルの代用品でもありません)。また あなた ユーザがアクセスできるものを制御すること。それは ユーザー を制御することができます。 その のリソースが第三者によってアクセスされる可能性があります。この2つは全く異なる使用例です。
あなたのおっしゃる文脈では、CASはおそらく正しい選択でしょう。
[更新しました】。]
とはいえ、ユーザーのIDをセキュアなリソースと考えれば、OAuthでSSOを実装することは可能です。Sign up with GitHub」などは、基本的にこれを実現しています。おそらくプロトコルの本来の意図とは異なりますが、実現することは可能です。OAuthサーバーをコントロールし、アプリがそのサーバーで認証することだけを制限すれば、それはSSOです。
強制的にログアウトさせる標準的な方法はありませんが(CASにはこの機能があります)。
関連
-
[解決済み] Jenkins Scriptlerプラグインの置き換え?
-
[解決済み] CloudflareでオリジンIPアドレスの公開を防ぐには?
-
[解決済み] 後で平文を取り出すためのユーザーパスワードの保管について、倫理的にどのように取り組むべきでしょうか?
-
[解決済み] OpenIDとOAuthの違いは何ですか?
-
[解決済み] JWT(JSONウェブトークン)の有効期限を自動的に延長する機能
-
[解決済み] Webサイトに "remember me "を実装するのに最適な方法は何ですか?[クローズド]
-
[解決済み] 認証とセッション管理に関するSPAのベストプラクティス
-
[解決済み】OAuth v2には、なぜアクセス・トークンとリフレッシュ・トークンの両方があるのでしょうか?
-
[解決済み】OAuth 2の暗黙のグラント承認タイプの目的は何ですか?
-
[解決済み] クロスドメイン認証のためのJWTを用いたシングルサインオンフロー
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ClientとUser-Agentの違い
-
[解決済み] CloudflareでオリジンIPアドレスの公開を防ぐには?
-
[解決済み] SSLエラー: ローカルの発行者証明書を取得できない
-
[解決済み] HTTPSヘッダーは暗号化されていますか?
-
[解決済み] ブラウザの「パスワードの保存」機能を無効にする
-
[解決済み] HTTPクッキーはポート指定ですか?
-
[解決済み] ベストプラクティス。パスワードのソルティングとペパリング?
-
[解決済み] パスワードのハッシュ化と暗号化の違いについて
-
[解決済み] HTTP基本認証で使用されるBase64エンコーディングの目的、理由を教えてください。
-
[解決済み] コマンドの標準入力に変数の値を渡すには?