0

Azure でホストされている ACS ID プロバイダーと統合しようとしている MVC 3 アプリケーションがあります。チュートリアルに従っていますが、ASP.NET MVC を使用している場合、チュートリアルが機能していないようです。

基本的に、ユーザーにフラグを付けたビューをヒットすると、 ID プロバイダー[Authorize]のリストを含む Azure でホストされているログイン ページにリダイレクトされます。プロバイダー (この場合はLive ) を選択してログインします。この時点で、これはすべて期待どおりに機能します。認証に成功すると、(視覚的に)アプリケーションにリダイレクトされ、代わりに ID プロバイダー ページに戻ります。これを Fiddler で見ると、実際には返されるように見えますが、その後、サイクルが最初からやり直されます ( HTTP ステータス コード 302 )。

誰かがこれを引き起こしている原因を説明できますか?

Azure portal 内で、証明書利用者アプリケーション用に構成された次の URL があります。

  • レルム: http: //localhost:7777/
  • Return Url : http: //localhost:7777/ ( http: //localhost:7777/Home/About も試しました)
  • 他のすべてのケースでは、デフォルト設定を使用しています

URL は Web.config の内容と一致します (末尾のスラッシュを含む)

次のコントローラは 1 つだけです。

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View();
    }

    [Authorize]
    public ActionResult About()
    {
        Response.Write("Claims Received from ACS:");
        ClaimsIdentity ci = Thread.CurrentPrincipal.Identity as ClaimsIdentity; foreach (Claim c in ci.Claims)
        {
            Response.Write("Type: " + c.ClaimType + "- Value: " + c.Value + "");
        }

        return View();
    }
}

注:これは、この統合を通じて動作するように作成された新しいプロジェクトです。すべてのパッケージと関連する SDK はすべて最新です。

4

2 に答える 2

0

ログインして Web アプリケーションに戻ると、ログインしていないと見なされて、ID プロバイダーのサインイン ページに再度リダイレクトされるということでしょうか。

認証ロジックが正しく構成されているかどうかを確認してください。たとえば、ロール ベースの認証を使用する場合、ロールを返すルールを作成するように ACS を設定する必要があります。Authorization 属性の代わりにカスタム認証を使用することもできます。カスタム認証コードで、必要なクレームが存在するかどうかを確認できます。クレームは、役割またはその他のもの (ユーザー名、年齢など) にすることができます。通常、カスタム承認は承認属性よりも機敏です。

よろしくお願いします、

明徐。

于 2012-07-03T10:36:46.533 に答える
-1

サンプル コードを変更していないことを確認してください。これは公式の ACS SDK サンプルであるため、多くの人が試しており、動作します。

また、元の投稿で、ASP.NET 認証を構成したと述べました。

<authorization>
     <deny users="?" />
   </authorization>

ASP.NET 認証を使用したくない (WIF を使用したい) 場合は、(ドキュメントに示されているように) これを削除してください。

よろしくお願いします、

明徐。

于 2012-07-05T09:22:52.440 に答える