Azure ACSからの役割を特定する
-
11-12-2019 - |
質問
Webを知っているので、Azure ACSのためのチュートリアルがたくさんありましたが、ほとんどの場合、Inset Simple ACSがWebサイトやアプリケーションに停止します。さて、私は、すべての有名なユーザーOAuthプロバイダを識別してリンクし、データベースに新しいユーザーを追加してから、それらに役割を割り当てることが可能です。プロセスの後、それらは単にプロバイダをクリックするだけで同じアカウントに戻りますか?あなたはそのようなチュートリアルを共有することができるのですか?これが私が作りたいプロセスフローです: ウィンドウライブ+ Google + Yahoo + Facebook、一人のアカウントすべてを持つことができますが、私は彼らの情報も必要です、そして私は私のCuatomデータを入力する必要があります、そして問題はどのようにリンクすることができますか?特定のIDを識別するにはどうすればいいですか?だから私はそれを認識することができ、それに役割を割り当てることができます..
質問1:リンク方法?
質問2:システムで識別する方法は?
質問3:役割を果たす方法?Azure Admin Pageからはなくコード
thx
解決
あなたがACSを扱うとき(そして一般的なクレーム)に注意する必要があることが1つあります - あなたはクレーム。
今、ACS固有の質問に。 Windows Azure Access Control Serviceは、あなたが自動的に望むものをする魔法の杖ではありません。 ACSはクレームと協力し、特定の主張の1セットのみを扱う最も簡単な方法であり、異なるプロトコルのすべての異なる実装に気にしないでください。実際、ブラウザベースのアプリケーションを作成するときは、 ws-federationプロトコル(および
- ユーザーID
- ACSネームスペース
あなたが得る一意性は ameridentifier (表現されています)によって: http://schemas.xmlsoap.org/ws/2005/05/identity/claims/ NameIdentifier )。
最初のキャッチは、 http:// yourcompanyを通じてあなたのサイトに識別された「john.doe@gmail.com」と言うことです。 AccessControl.Windows.net amedIdentifier "x"を取得します。いつ、同じ「john.doe@gmail.com」があなたのサイトに自分自身を識別します。 http:// yourcompany-live .AccessControl.Windows.net / 、NameIdentifier "y"を取得します。そしてこれはあなたがあなたのアクセス制御サービスを介してリンクするすべてのアイデンティティプロバイダに当てはまります。
2番目のキャッチは次のとおりです.Rive ID IDプロバイダは、ACSを介して設定されている場合、銘記者のクレームのみを提供します。それ以外の何もありません。
今質問:
質問1:リンクをリンクする方法?
IDをリンクする唯一の実行可能な方法は、アプリケーションに独自のリンクロジックを作成することです。私がすることは、すべての自動生成されたコードとACSへの受動的なリダイレクトの使用を停止することですが、受動的なフェデレーションのいくつかを手動で処理することです。これは意味があります - ユーザーがログインしているかどうかを注意します。ログインしていない場合は、ユーザーを自分のカスタムログインページにリダイレクトします。ここで、ACSから設定されたログインオプションを取得します。ユーザーがログインしている場合は、そのユーザーの自分のユーザーデータベースにエントリを作成します。私は単一のユーザーにリンクしたいすべてのアイデンティティプロバイダのフィールド(またはリンクテーブル)を持ちます。理解して、私はユーザーが持っているかもしれないすべての銘柄を保存します。さて、ユーザーアカウントをどのようにリンクするのでしょうか。異なるアプローチがあるかもしれません。まず、彼/彼女がアカウントをリンクすることを許可するようにユーザーを字下記する必要があります。その後、作成された一意のID(GUIDではなく、ユーザーが簡単に記憶させるために)の「リンケージチケット」を参照しましょう。このIDをユーザーに表示し、他のプロバイダと一緒にログインするオプションを提供します(ACSからの権利のリストを取得します)。ユーザーが別のプロバイダに付属しているとき - チケットに入るとフィールドを表示します。チケットを確認し、有効な場合は既存のアカウントへのリンク。
質問2:システム内での識別方法?
答えてください。答えに答えてください - あなたはあなた自身のカスタムユーザーデータベースを持っている必要があります、あなたはユーザーごとに1つのアカウントを持つでしょうが、そのアカウントはさまざまな権限によって発行されたすべての銘記者の請求を保持します。したがって、リンクされたACCOUTNSを持つユーザーを一意に識別することができます。
質問3:役割を果たす方法? Azure Admin Pageから与えないでください コードを通して
あなたのアーキテクチャでは、複数のアカウントをリンクさせる必要があるときに入力する複雑さのため、ACSの役割を維持することは非常に困難になります。アプリケーションデータベースに伴うユーザーロール割り当てを保持することをお勧めします。ローカルユーザーアカウントがある部分は、各アカウントに役割を割り当てます。
注意、ローカルユーザーアカウントと言うと、ローカルログイン認証情報をサポートするつもりはありませんが、ユーザープロファイルだけです。