私は、認証と承認を必要とする一連のアプリケーションに取り組んでいます。
複数のサービスを実行させたい場合や、サービス間認証とユーザー間認証も正確に管理する方法について、このためのいくつかのアーキテクチャ設計を正しい方向に向けてもらえますか?
私はおそらくこれをすべてOAuth2などを介して行いますが、これを展開する適切な方法が何かはわかりません。
うまくいけば、これが役立ちます。
ID管理システム
アイデンティティ管理システムは、多くの場合、信頼できるソースによって定義されています。これらは、個人の記録ソースとして私たちが利用しているシステムです。これらは実際には単体ではなく、人々を管理するために設計されたシステムの組み合わせです。
Identity Data Trusted Source
これは人のデータであり、通常は人事システムにあります。それらは広範囲であり、小規模な組織ではADと同じくらい簡単な場合もあります。
Authorization/Authentication Trusted Source
これは、組織がAAAに使用するシステムです。多くの組織では、これはMicrosoftのActive Directoryにすぎませんが、ディレクトリベースのサービスがいくつかあり、大規模な組織ではシステムをさまざまなソースに分割できます。
シングルサインオン
組織内でSSOを使用するほとんどの組織は、ユーザーが複数のAAAシステムにわたって単一のIDを持つことを可能にする何らかの種類のフェデレーションIDサービスを使用している可能性があります。
最新のフェデレーテッドサービスでは、SAMLとOAuth 2.0通信の両方が可能です。技術的なことを望む場合、OAuthは認証を対象としていないため、認証です。 Authentication Exchangeのメカニズムを提供しますが、それはその意図ではありません。
SAMLは両方で構築されており、エンタープライズSSOサービスでは一般的です。
これらがカスタムアプリケーションである場合、開発作業に追加した1つの標準はJWT(JSON Web Tokens)です。これは、実際にはSSO自体ではなく、最新のアプリケーションでSSO機能を有効にするメカニズムですが、両方の認証を処理できます。と承認。
一般的なIDMシステムの例
私はこれらのシステムの両方を使用しています。それらについて多くの予約があります。 Sailpointはよりモダンで、OracleはOracleです(たくさんのアップ/たくさんのダウン)。私はいつももっと良いものを作ることができると思っています(いつか楽しみにしようと思うかもしれません)。
自分で設定してください
IDM/IAM/IdAM(または必要な任意の略語)は、人とリソースへのアクセスに関する管理機能の共通セットを提供するように設計されていることを理解してください。これには、IDアクセス、ロール管理、ポリシーの展開、リソースのプロビジョニング/プロビジョニング解除の中央リポジトリになることが含まれます。 Wiki 参照用。
あなたの実際の目標は、IDMのようではなく、リソース管理のように聞こえます。つまり、これらのシステムでは特に達成されないものです。いくつかのこと:
フェデレーションサービスから始めて、それらを調査することをお勧めします。これにより、彼らの目的が何であるかを理解することができます。大規模なSSOを検討しているほとんどの組織は、物事を簡素化するためにフェデレーションサービスを利用しています。
ここでマイクロソフトショップという用語が登場します。その理由は、すべてのアプリがMSであり、ADに対して認証できるためです。私はこれを行った組織に行ったことがありませんが、その単純さを持っているなら、称賛。
一般的な展開に関する推奨事項:
通常、OpenID ConnectとOAuth2はSSOの目的で使用されます。
承認は一般にビジネスロジックに依存するため、一般的な推奨事項を提示することはより困難です。また、その領域には良い標準がありません(XACMLはほとんどの場合複雑に見え、JSON + RESTスタックにはあまり適していません)。単純な場合OAuth2スコープで十分ですが、より複雑な場合承認ルールは、異なるサービス個別に、ただし中央で管理(たとえば、サービスはIDM内で提供されたロールを登録します)。
OKTA、PingなどのIDaaSソリューションプロバイダーのサブスクリプションを購入できます。Pingには、Ping Access for OAuth2.0専用の製品があります。デプロイは、IDaaSソリューションプロバイダー自身がアーキテクチャを調査することによって導かれます。