.net core отправляет ClaimsPrincipal в ответ на действие - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь передать данные пользователя как ClaimsPrincipal из одной службы API в другую.

[HttpPost("getexternal")]
public async Task<IActionResult> GetUserByExternalLogin(ExternalSignModel model, [FromServices]IEnumerable<IExternalAuthentication> providers, [FromServices]IUserClaimsPrincipalFactory<MembershipUser> claimsPrincipalFactory)
{
    if (model == null) return BadRequest("Missing agrumets");
    if (string.IsNullOrEmpty(model.Code)) return BadRequest($"{nameof(model.Code)} must not be empty");
    if (string.IsNullOrEmpty(model.Provider)) return BadRequest($"{nameof(model.Provider)} must not be empty");

    var provider = providers.FirstOrDefault(w => w.ProviderName == model.Provider);

    if (provider == null) return BadRequest($"Provider for external login {model.Provider} is missing");
    try
    {
        var externalLoginInfo = await provider.AuthenticateAsync(model.Code);
        var user = await _userManager.FindByLoginAsync(externalLoginInfo.LoginProvider,
            externalLoginInfo.ProviderKey);
        user = user ?? await _membershipUserHandler.RegisterUser(externalLoginInfo);
        var claimsPrincipal = await claimsPrincipalFactory.CreateAsync(user);
        return Ok(claimsPrincipal);
    }
    catch (Exception ex)
    {
        return BadRequest(ex.Message);
    }
}

А вот служба вызова:

public async Task<ClaimsPrincipal> GetUserByExternalLogin(ExternalSignModel model)
{
    var uri = $"{BaseServiceUri}/getexternal";
    var response = await _client.PostAsync(uri, model, new JsonMediaTypeFormatter());
    var user = await response.Content.ReadAsAsync<ClaimsPrincipal>();

    return user;
}

_client - этопросто HttpClient

, но когда я делаю return Ok(claimsPrincipal); на звонящем, я получаю ошибку 400.

Что я делаю не так?Как я могу отправить ClaimsPrincipal?

...