13

ウェブアプリとサーバーを含む 2 つの製品があります。

両方にシングル サインオンを実装して、ユーザーが 1 つの製品にログインすると、そのユーザーに属する他の製品のリソースに自動的にアクセスできるようにします。

少し調べてみたところ、SAML が適切なアプローチであることがわかりましたが、どのように進めたらよいかわかりません。

独自のサービス プロバイダーを実装するのは良い考えですか? 私は Shib SP を見てきましたが、製品に統合したいのであれば、それほど簡単ではないようです。

ですから、以前に同様の問題に遭遇したことのある人からの提案を探しています。

もう 1 つの質問は、OpenSaml を使用して SP を実装する必要がある場合、どのリソースを学習できるかということです。参照できるチュートリアルや例はあまりないようです。

また、自分の SP に含める必要がある大きな手順やコンポーネントを誰かが指摘してくれれば、本当にありがたいです。

編集1:

私が欲しいものについての詳細を提供してみてください。2 つの個別の製品があります。現在、ユーザーデータベースを外部化できます。たとえば、当社の製品は、サービスを適切に実装している限り、LDAP サーバーまたはその他の外部ユーザー DB に接続するように構成できます。

ここでの目標は、両方の製品で SSO を使用することです。1 つのシナリオは、両方の製品に独自の SP コンポーネント (実装または統合) がある場合です。お客様は独自の IdP を持っている場合があります。いくつかの構成により、SP は IdP に接続し、そこから認証を行うことができます。ユーザーは両方の製品にアクセスするために 2 回ログインする必要はありません。もちろん、お客様が IdP をお持ちでない場合は、すぐに使用できる IdP を提供できます。

4

3 に答える 3

13

Shibboleth の最大の問題は、それが事実上、SAML v2.0 仕様のリファレンス実装であることです。

ただし、ほとんどの日常的なインストールでは、SSO 用にいくつかの Web アプリを有効にするために、実際には SAML 仕様をほとんど必要としません。

しかし、Shibboleth はそのすべての機能を備えたすべてを実装しているため、構成するのが面倒な場合があります。

私たちは Shibboleth と一緒にプロジェクトを行いました (そして、それは確かに最先端のユース ケースでした)。当時 SAML の初心者だった私にとって、すべてを立ち上げて機能させるのは本当に面倒でした。

次の刺し傷として、Web プロファイルを介して SSOのSAML 仕様を調べました。読んでみると、この限られたユースケースについては実際には非常に簡単です。そして、再び Shibboleth を使用する代わりに、OpenSAML ライブラリを使用して独自の IdP と SP を作成することにしました。

Shibboleth をより速く動作させることはできなかったでしょうか? おそらく。しかし、私たちが自分たちで行っていることを理解できるとは思いません。確かに、ちょっとした Not-Invented-Here ですが、このようなことは、ソフトウェアと語彙を理解している場合には十分に混乱を招きます。そして、SAML には新しい語彙がぎっしり詰まっています。

SimpleSAMLを IdP として使用し、Web アプリ用に独自の SP を作成することも検討できます。SimpleSAML は PHP に含まれていますが、もう少しユーザーフレンドリーです。自己完結型のApacheサービスとして扱うことができます。

私たちの SP は約 1000 行の javadoc 化されたコードに重きを置いていると言いますが、それは主に OpenSAML のものといくつかのユーティリティのものを一緒に配線しています。実はそれほど怖くない。ただし、署名された XML BLOB の読み取りを本当に楽しむ準備をしてください。

これが本当に簡単ではないのはイライラしますが、養子縁組などに関しては少しニワトリ/卵のようなものです.

どれもあなたに合わない場合は、OAuth2 とそのプロファイルの一部を参照してください。

于 2012-07-10T22:57:18.277 に答える
3

2 つの製品間でのみ SSO を実装したい場合は、ゼロから何かを構築する方が簡単だと思います。Java なら、Shibboleth の OpenSaml がとても良いライブラリです。

より多くのものやいくつかの複雑なシナリオを実装し始めるときは、既に構築されているものを使用することが最善の選択です。また、システムごとに作成する可能性が高いいくつかのもの (たとえば、アサーション生成、xml-dsig、​​検証など) にも注意する必要があります。

一見すると、すでに構築された製品は複雑すぎたり、特定のニーズに合わせて拡張したり適応したりするのが難しすぎるように見えるかもしれません。しかし、コネクタと実装を作成する開発努力は、すべての SAML 機能を爆発させたいと感じたときに報われます。

ただし、達成したいことをより詳細に説明できれば、非常に役立ちます。あなたの質問はかなりオープンだと思います...

于 2012-07-10T22:36:27.020 に答える
0

Shibboleth Service Provider の個人的な経験はありませんが、現在、Shibboleth IdP、Shibboleth Discovery Service、およびGuanxi Service Providerを使用するアーキテクチャを開発しています。Guanxi Service Provider の軽量 Guard モジュールを Java Web アプリケーションと統合するのは簡単なことであり、独自のモジュールを作成しなくても、Shibboleth ベースのアーキテクチャを簡単に取得できます。Guanxi SP をセットアップするためのlocalhost チュートリアルがあります。Guanxi WAYF と IdP に関する部分をスキップして、代わりに Shibboleth コンポーネントを使用してください。

于 2012-07-12T09:38:41.663 に答える