Невозможно аутентифицировать пользователей из домена \ группы пользователей - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь аутентифицировать всех пользователей домена для моего приложения MVC.В данный момент я тестирую пользователя VSD-PROMETHEUS / Administrator.

Я пытался авторизовать группу пользователей из VSD-PROMETHEUS в своем классе контроллеров, как предложено в этом ответе . * 1005.*

[Authorize(Roles = "VSD-PROMETHEUS\\Domain Users")]

Это не работает, мне просто предлагают войти в систему через браузер.

Я также попробовал это вместо web.config

<authorization>
      <allow roles="VSD-PROMETHEUS\Domain Users"/>
      <deny users="*"/>
</authorization>

Этотакже не удалось


Для записи я попытался аутентифицировать только роль пользователя без указания домена, и я смог получить доступ к своему сайту

[Authorize(Roles = "Users")]

Это также работает, когда я простоукажите имя пользователя

[Authorize(User = "VSD-PROMETHEUS\\Administrator")]

Как я могу аутентифицировать всех пользователей из одного домена (в данном случае VSD-PROMETHEUS)?

1 Ответ

0 голосов
/ 31 мая 2019

Я получил эту работу, создав собственный атрибут авторизации.

using System;
using System.Web;
using System.Web.Mvc;

/// <summary>
/// Authorises User based on what domain they are on.
/// </summary>
public class AuthorizeDomainAttribute : AuthorizeAttribute
{
    /// <summary>
    /// List of domains to authorise
    /// </summary>
    public string[] Domains { get; set; }

    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext == null)
        {
            throw new ArgumentNullException("httpContext");
        }

        // Get the domain part of the username
        string userDomain = httpContext.User.Identity.Name.Substring(0, httpContext.User.Identity.Name.LastIndexOf('\\'));

        // Check if the user is on any of the domains specified
        foreach(string domain in this.Domains)
        {
            if (userDomain == domain)
            {
                return true;
            }
        }

        // Otherwise don't authenticate them
        return false;
    }
}

И затем используя этот атрибут на моем контроллере.

[AuthorizeDomain(Domains = new[] { "VSD-PROMETHEUS")]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...