0

異なる Web アプリケーション (asp.net アプリケーションと MVC4 アプリケーション) 間で認証と承認を共有しようとしています。

マシン キーとそれらの値をサイト間で同じに設定する必要があることを読みました。私はこれを行い、認証は正しく機能しています。

しかし、MVC アプリケーションでは、Authorize 属性を使用して、ユーザーが見るべきものだけを見ることができるようにしたいと考えています。これは機能していません。

私もチェックしました。

ASP.Net アプリケーション (ログインが行われる場所) から User.IsInRole("Admin") を呼び出すと、返される値は true ですが、MVC アプリケーションに移動すると、同じ呼び出しが false を返します。

役割がアプリケーション全体で共有されていないようです。取得することは可能ですか、それともカスタム Authorize Attribute を作成する必要がありますか?

ありがとう

4

1 に答える 1

1

アプリケーションの数が増えるほど、フォーム Cookie を共有する際の問題が大きくなります。最終的に、2 つのアプリケーションが異なるドメイン (something.foo.comおよびsomethingelse.bar.com) にある場合、ブラウザーに強制的に 2 つの異なるドメインに Cookie を送信させることはできないため、これは機能しません。

これは、フォーム Cookie を手動で制御して.yourdomain.comトップ レベル ドメインに対して発行し、サブドメイン ( app1.yourdomain.comapp2.yourdomain.com) にアプリケーションがある場合にのみ機能します。そして、これは深刻な制限になる可能性があります。

できることは、認証を外部化することです。つまり、ユーザーの認証と承認を唯一の目的として別の Web アプリケーションを作成します。シングル サインオン プロトコル (WS-Federation、OAuth2、OpenID) のいずれかを選択し、この認証プロバイダーを中心にアプリケーション環境をフェデレートします。

特にこれが初めての場合は難しいように聞こえるかもしれませんが、時間を投資すればメリットしかありません.

于 2012-08-16T07:30:59.040 に答える