4

Win 7、IIS 7.0、VS2012 を実行しています asp.mvc4 Web アプリを作成しました 別の VM に ADFS2.0 があります

VS 2012 で ID およびアクセス ツールを使用する

ビジネス ID プロバイダー (ADFS2 など) を使用することを選択し、STS メタデータ ドキュメントへの URL を入力します。

https://server.local/federationmetadata/2007-06/federationmetadata.xml

ウェブ構成を編集しました

<system.web>
...
<httpModules>
...
    <remove name="FormsAuthentication" />
</httpModules>
</system.web>

この

<system.webServer>
...
   <modules>
   ...
      <remove name="FormsAuthentication" />
   </modules>
</system.webServer>

また、プロジェクトの Windows 認証が無効になっていることも確認しました

Web サイトは http:// localhost /WebSite/login.aspx?ReturnUrl=%2fWebSite%2f のような URL にリダイレクトされ、「リソースが見つかりません」というエラーが表示されます。

これを機能させるには、他に何をいじる必要がありますか?

Microsoft doco は軽量ですhttp://blogs.msdn.com/b/vbertocci/archive/2012/03/15/windows-identity-foundation-tools-for-visual-studio-11-part-iii-connecting-with -a-business-sts-eg-adfs2.aspx

私はすでにローカル開発 STS MS Identity and Access Tool MVC 4で同様の問題を抱えています

4

1 に答える 1

6

OK、これを解決するのに何日もかかりましたが、これらは私がそれを実行するために行ったことです. やるべきことはまだたくさんあります。

前提条件:

  • ドメインのどこかで実行されている ADFS 2.0 サービス。
  • IIS 7 と自己署名証明書、またはドメイン全体で使用できる証明書。
  • Identity and Access (バージョン 1.0.2) 拡張機能がインストールされた Visual Studio 2012。
  • IIS で実行するように設定された MVC4 Web アプリケーション。
  • https 経由でアクセスできるように、自己署名証明書がサイトに追加されていることを確認します。
  • ADFS 2.0 サービスへのアクセスを許可するには、マシンのファイアウォール設定を微調整する必要がある場合があります。

開発ワークステーション上

MVC4 プロジェクトで

  • Web プロジェクトを右クリックして、[ID とアクセス] ダイアログを開きます。
  • [ビジネス ID プロバイダーを使用する (ADFS2 など)] を選択します。
  • STS メタデータ ドキュメントへのパスを入力します。例: https://{ADFS SERVER へのパス}/FederationMetadata/2007-06/FederationMetadata.xml
  • アプリケーションのレルムを入力します。例: https://{WEB APPLICATION URL}/
  • 末尾のスラッシュが違いを生みます。
  • これらの変更を受け入れて、ダイアログを終了します。

次のコードをプロジェクトに追加します

using System;
using System.IdentityModel.Services;

namespace NAMESPACE
{
    public class FixedWsFederationAuthenticationModule : WSFederationAuthenticationModule
    {
        public override void RedirectToIdentityProvider(string uniqueId, string returnUrl, bool persist)
    {
        //This corrects WIF error ID3206 "A SignInResponse message may only redirect within the current web application:"
        //First Check if the request url doesn't end with a "/"
        if (!returnUrl.EndsWith("/"))
        {
            //Compare if Request Url +"/" is equal to the Realm, so only root access is corrected
            //https://localhost/AppName plus "/" is equal to https://localhost/AppName/
            //This is to avoid MVC urls
            if (String.Compare(System.Web.HttpContext.Current.Request.Url.AbsoluteUri + "/", base.Realm, StringComparison.InvariantCultureIgnoreCase) == 0)
            {
                //Add the trailing slash
                returnUrl += "/";
            }
        }
        base.RedirectToIdentityProvider(uniqueId, returnUrl, persist);
    }
}
}

ADFS 2.0 サーバー上

  • 自己署名証明書を使用した場合は、Web アプリケーション https://{WEB APPLICATION URL}/ に移動し、ゾーンを信頼済みサイトに変更します。
  • ブラウザのアドレスバーで、証明書を右クリックしてインストールできるはずです (信頼されたサイトからの証明書のみをインストールできます)。証明書は、信頼されたルート認証局 -> レジストリの下にインストールする必要があります。
  • ADFS コンソールを開き、フェデレーション メタデータ アドレス https://{WEB APPLICATION URL}/FederationMetadata/2007-06/FederationMetadata.xml で Relying Party Trusts を追加します。

いくつかのカスタム ルールを追加する

MVC4 は、使用可能な ClaimsPrincipal を作成するためにこれらのルールを必要とします

Name プロパティにパススルー ルールを追加します。

そして、これらの 2 つのカスタム ルール

=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Value = "true");

=> issue(Type = "http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider", Value = "true");
于 2012-11-20T03:54:41.810 に答える