既存のWebフォームサイトをマルチテナント環境として構成しています。 1つの要件は、複数のクライアントADFSと統合できることです。 私はthis postに続き、複数のADFSをサポートするMVCアプリケーションを正常に実装しました。しかし、私はまだMVCアプリで再現できない問題 に直面しています。 Webフォームサイトでは、登録された最初のADFSプロバイダのみが成功します。 2番目は常に が認証され、自分のサイトに戻った後にSignatureVerificationFailedExceptionをスローします(例外は私の側で起こります)。 これは、私がOWINスタートアップコンフィギュレーションでapp.Map(...)またはapp.Use(...)を使用するかどうかにかかわらずです。
WebアプリケーションをWebアプリケーションに変換しようとしましたが、同じ結果になりました。私は、リクエストがWEB FORMSで処理される方法に関連していると思います。これはMVCとは異なります。
ミドルウェアのマッピングをいくつかの方法で処理する必要がありますか?
私は何が欠けていますか? ?
それともこれは...ここASP.NET Webフォームサイト - OWIN KATANAを使用した複数のADFSとの統合
は私OWINのスタートアップコンフィギュレーションであるすべてのことはできません。どんなに私は何をすべきか
context.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties { RedirectUri = callbackUrl },
provider);
response.StatusCode = 401;
response.End();
、のみ:ここで
app.Properties["Microsoft.Owin.Security.Constants.DefaultSignInAsAuthenticationType"] = Config.ExternalAuthentication.Cookie;
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = Config.ExternalAuthentication.Cookie,
AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passive
});
string wreply = Config.ExternalAuthentication.Wreply;
string wtrealm = Config.ExternalAuthentication.Wtrealm;
List<Company> adfsCompanies = BL.GetCompaniesWithADFS();
app.Map("/Public/Login.aspx", configuration =>
{
foreach (Company company in adfsCompanies)
{
//configure middleware
var middleware = new WsFederationAuthenticationOptions()
{
MetadataAddress = company.ADFSMetadataUrl,
AuthenticationType = company.TenantName,
Caption = company.Name,
Wreply = wreply,
Wtrealm = wtrealm,
BackchannelCertificateValidator = null
};
//add to pipeline
configuration.UseWsFederationAuthentication(middleware);
}
});
は私のチャレンジ要求でありますどのADFSミドルウェアでも最初に登録されたミドルウェアは成功します。私はミドルウェアを別のパイプラインステージに接続しようとしましたが、成功しませんでした。
ありがとうございました!
多くのおかげで、@ Tratcher。あなたの答えは完全な解決策ではありませんが、正しい方向に私を導きます。質問をきれいでシンプルに保つために、私はもう一つの答えでさらに詳細を述べます – Vladislav