2016-04-23 4 views
1

オブジェクト私は、次のアーキテクチャ enter image description hereシングルサインオン - APIバージョン管理および共有データ転送が

これらと私のWebアプリケーションのためのSSOを実現し、基本的な流れです: enter image description here

は今、概念的には、私にはOKと思われるが、どのようなすべてのアプリケーションがSSO Web APIに依存しているという事実はわかりません。

  1. SSO Web APIで何か変更があった場合、すべてのアプリケーションが突然動作を停止する可能性があります。
  2. SSO APIにユーザー(ユーザー名、電子メール、役割、機能)のDTOオブジェクトがある場合、App1とApp2と何らかの形でそれらを共有する必要があることを意味します。私はwsdlでSOAPを検討しましたが、WCFのより柔軟なクライアント側および後継者であるWeb APIを使用したいと考えています。私の頭に浮かぶのは、SSO APIのDTOオブジェクトを別のクラスライブラリプロジェクトに入れてApp1とApp2の両方で参照することです。

編集:私はあなたの二つの質問については役割/機能に基づく認証

答えて

2

とイントラネットアプリケーションのためにこれを必要とする:あなたのようなユースケースのために十分に確立された基準があります。 OpenID ConnectOAuthまたはより古い、より企業のようなWS-Federation/SAMLをご覧ください。

とにかく、あなた自身のセキュリティを圧延することは、通常はお勧めではありません。避けるべきことは(evidence)です。すぐに使用できるソリューションについては、IdentityServerをご覧ください。

+0

私はOAuthをチェックアウトしましたが、それは私には混乱しています(これは認可と古典的な役割ベースではなく、自分のリソースにサードパーティがアクセスする方法を制御できるようにします) 。だから、OAuthの上に構築されSSOをサポートするライブラリを使用するには、集中認証と基本的な役割ベースの承認だけが必要な場合はちょっと残念です。 –

1

これは自家製SSOソリューションのようです。私は自分自身を構築しないことをお勧めします。一方

、あなたの質問に答えるために:

Q1:あなたはあなたのバージョンのAPIを持っています。それをバージョンアップするにはいくつかの方法があります。最も簡単なのは、ルーティングのバージョン番号を 「api/v2/sso」

とすることです。 DTOをお持ちの場合は、DTOのみを含むライブラリプロジェクトを作成することができます。ライブラリをApp1およびApp2プロジェクトでDLLとしてハード参照するか、またはNugetパッケージとして配布できます。私はナゲットパッケージを好んでいます - あなたはWebベース(IISでホストされている)またはネットワーク内の共有ドライブとしてのナゲットサーバーを持つことができます。

+0

私の2つの質問にお答えいただきありがとうございますNuGetサーバーは非常に興味深い考えのようです。プロジェクトがソース管理されている場合、どのように管理すべきですか?ねえ? SSOについて - 推奨事項は? –

関連する問題