2017-12-14 9 views
0

自分のWebアプリケーションの共通ログインとしてIdentityServer4を使用します。IdentityServer4:特定のユーザー/クライアントの組み合わせに対してのみログインを許可します

すべてのユーザーがすべてのアプリケーションを自由に使用できるわけではありません。すべてのアプリケーションにユーザーが拒否されてアクセスできないようにすることもできます。

一般的な「このアプリはあなたのためにアクティブ化されていない」ページをIDサーバに集中管理するのはやや洗練されているようです。そうすれば、そのページを一度だけ実装する必要があります。アイデンティティ・サーバーは、どのユーザーがどのクライアントにアクセスできるかについての知識を持っている必要がありますが、これは私のシナリオでは合理的です。

私は正しい場所がテストにフックするかどうか分かりません。ユーザーが既にアクセスしているクライアントからIDサーバーにログインしている可能性があるため、ログインページにすることはできません。

答えて

2

私はこのアプローチには向いていませんが、あなたのアプリのデザインはわかりません。

URLがユーザーを混乱させる可能性があると私は考えます。 IdentityServerのURLはです。「このアプリケーションはあなたのためにアクティブ化されていません」メッセージです。それはユーザーにとって何を意味し、どこから行くのですか?

さらに、IdentityServerはユーザーを認証するためのものであり、ユーザーを認証するものではありません。この種のロジックをIdentityServerに移行するのは正しいとは言えません。それは余分な仕事のようにも聞こえる。

簡単にしてください。承認をリソースに近づけ、メッセージとともに1ページを作成します。それをあなたのすべてのアプリにコピーして、CSSが残りのことを行います。

デフォルトの動作を使用します。匿名ユーザーが保護されたメソッドにヒットした場合、ユーザーは自動的にログインページに再ルーティングされます。認証されたユーザーがアクセス権を持たないメソッドにヒットした場合、デフォルトの(アプリ)Account/Deniedページに再ルーティングされます。

あなたは、スタートアップコンフィギュレーションにパスを上書きすることができます。

.AddCookie("Cookies", options => 
{ 
    options.AccessDeniedPath = "/accountdenied"; 
}) 

あなたはページ「このアプリがあなたのために起動されていない」、またはあなたがそこから行くとコードへとリダイレクトすることができます表示することができますIdentityServerページ。ページをカスタマイズするための追加情報を追加することができます。

代わりに、IdentityServerのページを入力して、デザインに適したページにすることもできます。私はそれを試していないので、可能かどうかはわかりません。

いずれにしても、私はアプリケーションに認証ロジックを保持しています。

+0

これは良いアドバイスと思われ、私はこの時点では不明です。私は集中管理したいと思っていたかもしれません。ユーザー管理(どのユーザー/アカウントに対してどのアプリケーションがアクティブで、どの権限がどのようなものであるか)が集中しています。私のシナリオでは、すべてのアプリケーションに独自のユーザー/アカウント関連のUIを持たせるのは妥当ではないようです。とにかく、アプリケーション固有のアクセス拒否ページを表示するというあなたの提案には引き続きお答えいただけると思います。とにかく、各アプリごとにこのようなページが必要であるとは考えていませんでした。 – John

関連する問題