ASP. Net Базовый внешний логин Microsoft - Как получить TenantID и UserID - PullRequest
1 голос
/ 29 апреля 2020

У меня есть приложение в ASP. Net Ядро с удостоверением для пользователя, я также реализовал внешний вход в систему с использованием учетной записи Microsoft. Мне нужно получить tenantID и userID пользователя, который вошел на портал.

Я использую этот код

[HttpGet]
    [AllowAnonymous]
    public async Task<IActionResult> ExternalLoginCallback(string returnUrl = null, string remoteError = null)
    {
        if (remoteError != null)
        {
            ErrorMessage = $"Error from external provider: {remoteError}";
            return RedirectToAction(nameof(Login));
        }
        var info = await _signInManager.GetExternalLoginInfoAsync();
        if (info == null)
        {
            return RedirectToAction(nameof(Login));
        }

        // Sign in the user with this external login provider if the user already has a login.
        var result = await _signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: false, bypassTwoFactor: true);
        if (result.Succeeded)
        {
            _logger.LogInformation("User logged in with {Name} provider.", info.LoginProvider);

            return RedirectToLocal(returnUrl);
        }
        if (result.IsLockedOut)
        {
            return RedirectToAction(nameof(Lockout));
        }
        else
        {
            // If the user does not have an account, then ask the user to create an account.
            ViewData["ReturnUrl"] = returnUrl;
            ViewData["LoginProvider"] = info.LoginProvider;
            var email = info.Principal.FindFirstValue(ClaimTypes.Email);
            var firstName = info.Principal.FindFirstValue(ClaimTypes.GivenName);
            var lastName = info.Principal.FindFirstValue(ClaimTypes.Surname);
            var tenantId = info.Principal.FindFirstValue("http://schemas.microsoft.com/identity/claims/tenantid");
            var userId= info.Principal.FindFirstValue("http://schemas.microsoft.com/identity/claims/objectidentifier");
            return View("ExternalLogin", new ExternalLoginViewModel {
                Email = email,
                FirstName = firstName,
                LastName = lastName
            });
        }
    }

, но tenantId и userId всегда равны нулю.

...