2016-07-28 12 views
0

FormsAuthenticationを使用しているASP.NET/MVC Webサイトがあります。通常のように、ユーザーがページにアクセスしようとしたときに有効なFormsAuthentication Cookieがない場合、IISはユーザーをログインビューにリダイレクトします。ユーザーがログインコントローラにHttpPostを実行すると、コントローラアクションによってWebApi Webサービスが呼び出され、ユーザー名、パスワード、および顧客IDがSQL Serverデータベースに対して検証されます。認証が成功すると、コントローラアクションはFormsAuthenticationクッキーを設定し、ユーザーが要求したページにリダイレクトします。複数のADFSサーバーに対してWebサイトを認証できますか?

「Single Sign-On」についての売り上げは、その意味を明確にしていません。私が読んだところでは、これは通常、MSのActive Directoryフェデレーションサービスにアクセスすることを意味します。

この時点で私はこれがどのように機能するかはほとんど分かりませんでしたが、これを深く掘り下げる前に、認証コードをWebApi Webサービス内に置くことができました.Sqlサーバー指定した顧客に適したADFSサーバーのいずれかに対して、

私たちの問題は、数百人の顧客のために働いている何千人ものユーザーがわからないということです。多くの顧客にはADFSが実行されておらず、それぞれのユーザーはそれぞれ独自のADFSサーバーを備えています。

シングルサインオンに関しては、既にログインしている場合は、ADFSサーバーへのブラウザのリダイレクトを行い、その後リダイレクトしてログインを回避するように見えます。私たちの場合には、そうすることができると思います。リダイレクトするADFSサーバーは、データベースに到達するまでわかりません。

WebAPI WebサービスのC#コードからADFS認証を完全に行うことは可能ですか?

(ウェブサイト自体にはデータベースへのアクセス権がありません)web.configの唯一の設定は、ウェブサービスのベースURLです。どのような認証が行われるのかはウェブサービスではなくウェブサイト)

+0

。あなたは自分のアプリにアクセスし、さらに別のアプリのログインページにリダイレクトされ、認証されたユーザー情報とともにリダイレクトされます。この分離によって、アイデンティティプロバイダは、アイデンティティプロバイダを使用するすべてのアプリケーションを煩わせることなく、新しい機能(2つの要素の認証など)を導入することができます。そして、そうではありませんが、Microsoftの世界ではSSOはADFSに結びついていません。それは単なるオプションの1つです。 –

答えて

1

まず、シングルサインオン(SSO)はADFSに限定されません。つまり、資格情報を一度だけ入力すれば、自動的にアクセスするすべてのシステムが自動的に「認識」されます。後続のすべての承認要求は透過的です。たとえば、会社イントラネット(同じADドメイン)でWindows認証を使用する複数のWebサイトがある場合、SSOがあります。コンピュータにログインすると一度認証した後、WebブラウザはNTLMを使用してこれらのWebサイトに自動的に認証されますまたはKerberos。この場合、ADFSはありません。

ADFS(とより一般的には)が許容するものは、SSO全体のセキュリティ境界です。 Windowsの世界では、通常、セキュリティゾーンはActive Directoryフォレストによって作成されます。このフォレスト内のすべてのものは、Windows認証で提供されるSSOを使用してアクセスできます。しかし、このゾーン(SaaSアプリケーション、別の会社のネットワークにあるWebサイト)を離れると、すぐにSSOを実行するための別の認証プロトコルが必要になり、これらのプロトコルはADFSに実装されます。その後

あなたの特定の問題について:あなたは何ができるか

  • は、あなたがAdfsAuthを使用し、代わりにFormsAuthを使用するのです。未知のユーザーがページにアクセスすると、彼は認証のためにADFSにリダイレクトされます(ブラウザのリダイレクトを使用して正しく言及します)。どのADFSサーバーがユーザーを認証する必要があるかを知るためには、顧客ごとのIP範囲のリストを実際に区別する方法が必要です。顧客ごとに異なるURL?このようなことがなければ、唯一の方法は、「私はCompanyAのために働く」、「私はCompanyBのために働く」、「私はCompanyCのために働く」、これらの企業のいずれかで働いており、FormsAuthを使用して認証する必要があります。
  • この場合、WebApi Webサービスは次のことを行う必要があります。使用するADFSサーバーがわかっている場合は、そこでユーザーをリダイレクトします。それ以外の場合は、データベースを使用して通常どおりユーザーを認証します。
  • 顧客にAdfsAuthを使用すると、データベースは役に立たなくなります。この顧客に関連するすべての資格情報を削除できます。

たちのWebAPIの

でC#コードから完全にADFS認証を行うまあそれはあなたのサービスでは、「再実装」ADFSすることは可能ですが、あなたはそれを行う場合は、SSOを取得することはありません。フェデレーションを使用する場合は、ユーザーを会社のADFSサーバーにリダイレクトします。このADFSサーバーはコンピュータと同じドメインにあるため、ここでSSOを取得します。ユーザーが自分のサイトと同じセキュリティゾーンに属していないため、SSOを取得することはできません。

1

複数のアイデンティティプロバイダに対して認証する場合は、標準your own STSにリダイレクトされます。したがって、この場合、www.yourapp.comにsts.yourapp.comにリダイレクトされ、sts.somecustomer.comにリダイレクトされます。

Diagram showing RP-STS

、このようなデータフローを有効にするには、特定のツールがhome realm parameter (whr)あり、かつ(IDPのメンテナンスを可能にするために)AD FSのPowershell API。

RP-STSは、アプリケーションのトラストポイントとして機能し、適切なIDPの選択を管理します。 1つのRP-STS、多くのIP-STSお客様の各IP-STSは、AD FSのクレームプロバイダの信頼として設定されます。

いつものように、ヴィットリオはすでにcovered the subjectよりも優れています。疑いどのように、どのようなSSOがある中で、Googleのエコシステムを考える常に

Image showing two IP-STSs authenticating to single RP-STS, with a single RP

関連する問題