Что мне делать, если мой веб-сайт падает при попытке использовать активный каталог вместо ADFS? - PullRequest
0 голосов
/ 03 октября 2018

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

// Разрешить учетные данные Active Directory для удаления кого-либо из глобальной отписки

    protected void Remove_Click(object sender, EventArgs e)
    {


        using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "Domain"))
        {

            // find the group in question
            GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, "IT Group");

            if (group != null)
            { // remove user}

Теперь происходит сбой веб-страницы, и я получаю следующую ошибку:

Ошибка времени выполнения Описание: на сервере произошла ошибка приложения.Текущие пользовательские настройки ошибок для этого приложения не позволяют просматривать информацию об ошибке приложения удаленно (по соображениям безопасности).Однако его могут просматривать браузеры, работающие на локальном сервере.

1 Ответ

0 голосов
/ 04 октября 2018

Обновление:

Основной пользователь не может использоваться с формами ASP.NET, вместо этого вы должны использовать форму утверждений и проверить свои утверждения / роли.

    // Cast the Thread.CurrentPrincipal
        ClaimsPrincipal icp = User as ClaimsPrincipal;

   // Access IClaimsIdentity which contains claims
        ClaimsIdentity claimsIdentity = (ClaimsIdentity)icp.Identity;

  // what we are doing here is using a for each to get to the claim         
        foreach (Claim claim in claimsIdentity.Claims)
        {
 //The claim we are looking for is in this directory /groupsid
            if (claim.Type == "http://schemas.microsoft.com/claims/groupsid")
            {
 //We use a for loop to go through this because it reads it like a JSON and will either pull the first or last
//Basic for loop incrementing until it finds our group (IT ALL)
                for (int i = 0; i <= 0; i++)
                {
//If our claim contains IT ALL (which it does) then do something...
                    if (claim.Value.Contains("Name of Group"))
                    {
//I'm storing the result here so we can call it otherwise we lose it...
lblResultq.Text = (claim.Value.ToString());

Надеюсь, это поможет кому-то в будущем!

...