1

LDAP で認証するように asp.net (C#) をセットアップしました。すべて正常に動作し、ディレクトリ内の任意のユーザーでログインできます。問題は、特定のページを特定のグループの人々に制限する必要があるということです。ログイン ビュー + アカウント フォルダー アプローチを使用しています。

私の Web サイトのデザインはシンプルで、3 つのページがあり、1 つは誰でも見ることができ (アカウント フォルダーの外部)、残りの 2 つは認証が必要です。1 つのグループが両方の Web ページにアクセスできるようにし、2 つ目のグループが 1 つのページだけにアクセスできるようにします。

私はもう試した:

String group = "group";
if (!User.IsInRole(group)) {
    Response.Redirect("login.aspx");
}

しかし、私のユーザーがそのグループに属していなくても。私は LDAP ブラウザをオンにしており、グループに参加していることは確かです。LDAP ブラウザに「memberOf」と「CN=group」が表示されます。

私が間違っていることはありますか?

4

3 に答える 3

0

ドメイン名を追加しようとしましたか?

App.Config を使用してこれを実装することもできます: http://bytes.com/topic/asp-net/answers/300187-web-config-authorization-help

編集:

これは、 App.Configを使用した ASP.NET でのロールベースのセキュリティに関するより良いリンクです。

于 2012-04-05T18:52:44.550 に答える
0

FormsAuthenticationTicketユーザー用に作成すると、そのユーザーUserDataの「役割」が指定されます。

http://msdn.microsoft.com/en-us/library/system.web.security.formsauthenticationticket.aspx

ちょうど例:

FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
    username, DateTime.Now, DateTime.Now.AddMinutes(30),
    isPersist, "group");

//I'll add more example code for the sake of completing the example
string encryptTick = FormsAuthentication.Encrypt(authTicket);
HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName,
                encryptTick);
if (isPersist)
    cookie.Expires = authTicket.Expiration;
Response.Cookies.Add(cookie);

これにより、上記のコードが機能するようになります。

于 2012-04-05T18:56:55.720 に答える
0

ドメインに対して統合認証を使用していて、偽装を true に設定している場合は、ASPNET (およびその他のグローバル グループ) をディレクトリへのアクセス許可から削除し、指定された AD に追加することで、アプリケーションの領域をロックできます。アクセスしたいグループ。

この方法を使用するシステムを継承し、アクセス制御が適用されている場所を特定するのに数時間つまずいたため、これを間違いなく文書化します。

于 2012-04-05T20:27:57.393 に答える