24

最初にスタックオーバーフローに投稿しましたが、私はこのサイトが大好きです!...

MVC 4 を使用して、完全に機能する Azure ハイブリッド モデル アプリケーションの作成に成功しました。ここで、認証用の ACS をサイトに追加したいと考えています。すべての手順に従いましたが、シミュレーションでアプリを実行すると、ACS へのリダイレクトに失敗し、login.aspx が見つからないことを示すページが表示されます。

ACS が正しくセットアップされ、正常に動作することを証明するためだけに、単純な Web サイト ソリューションを作成しました。2 つのソリューションの web.config ファイルが大きく異なることに気付きました。

誰もこれをやろうとしましたか?どんな助けでも大歓迎です。

- - - - - 解決 - - - - - -

私はついにすべてを働かせることができました。 重要なのは、独自の認証を行う必要がなかったため、WebMatrix.WebData 参照を削除することでした。以下は、MVC4 リリース ノートからのものです。

WebMatrix.WebData.dll が ASP.NET MVC 4 アプリの /bin ディレクトリに含まれている場合、フォーム認証の URL を引き継ぎます。WebMatrix.WebData.dll アセンブリをアプリケーションに追加すると (たとえば、[展開可能な依存関係の追加] ダイアログを使用するときに [Razor 構文を使用した ASP.NET Web ページ] を選択することによって)、認証ログイン リダイレクトが /account ではなく /account/logon にオーバーライドされます。 /login デフォルトの ASP.NET MVC アカウント コントローラーによって期待されるとおり。

4

1 に答える 1

3

web.config ファイルを開きます。

認証ノードを見つけます。

次から変更します。

<authentication mode="Forms" />

に:

<authentication mode="None" />

役に立たない場合は、ここにコメントしてください。また、web.config を変更した後の結果はどうなりますか。

副次的な質問として、ACS 名前空間への参照をどのように追加しましたか - 「右クリック -> STS 参照の追加」または手動で web.config を変更しましたか?

必要なモジュールが Web サーバーに登録されていることを確認します。

  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="ClaimsPrincipalHttpModule" type="Microsoft.IdentityModel.Web.ClaimsPrincipalHttpModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
      <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
      <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
    </modules>
   ...
 </system.webServer>

また、microsoft.identityModel セクションがあり、その中に federatedAuthentcation ノードがあることを確認してください。

<federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://[your_namespace].accesscontrol.windows.net/v2/wsfederation" 
                      realm="http://127.0.0.1:81/" requireHttps="false" />
        <cookieHandler requireSsl="false" />
</federatedAuthentication>

「レルム」は、中継側アプリケーションの有効な URL です。また、requireHttps="false" は開発プロセスを簡素化するためのものです。

ローカルでデバッグするときは、Web プロジェクト (Cassini / webdevserver を使用し、system.webServer セクションを理解しない!) ではなく、クラウド プロジェクト (IIS を使用) を実行していることを確認してください。

于 2012-04-23T21:57:27.763 に答える