Как справиться с доставкой токенов OAuth с перенаправлением как для веб -клиентов, так и для мобильных клиентов в API .NC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Как справиться с доставкой токенов OAuth с перенаправлением как для веб -клиентов, так и для мобильных клиентов в API .N

Сообщение Anonymous »

Я работаю над интеграцией Google OAuth в свой API .NET для поддержки аутентификации как для веб -приложения, так и для мобильного приложения (например, построено из Flutter). Я немного застрял в том, как обрабатывать доставку токенов после OAuth, особенно при использовании перенаправления.
Вот текущий поток:
  • Клиент попадает в конечную точку/api. /> < /li>
    После входа в систему Google перенаправляет обратно в /signin-google, а мой API получает куки Google. Токен.[HttpGet("google")]
    [AllowAnonymous]
    public async Task RedirectToGoogleProvider()
    {
    var redirectUrl = Url.Action(nameof(GoogleResponse), "OAuth", new
    {
    returnUrl = "https://google.com"
    }, Request.Scheme);

    var properties = new AuthenticationProperties { RedirectUri = redirectUrl };
    return Challenge(properties, GoogleDefaults.AuthenticationScheme);
    }

    [HttpGet("signin-google")]
    [AllowAnonymous]
    public async Task GoogleResponse([FromQuery] string returnUrl, CancellationToken cancellationToken)
    {
    var authenticateResult = await HttpContext.AuthenticateAsync(GoogleDefaults.AuthenticationScheme);
    if (!authenticateResult.Succeeded)
    return BadRequest("Google authentication failed.");

    var claims = authenticateResult.Principal.Identities.FirstOrDefault()?.Claims;
    var email = claims?.FirstOrDefault(c => c.Type == ClaimTypes.Email)?.Value;

    if (string.IsNullOrEmpty(email))
    return BadRequest("Email not found");

    var result = await _authenticationService.SignInWithProviderAsync("google", email, cancellationToken);

    return result.Match(
    success => Redirect("http://localhost:3000"), // Redirect to web app
    BadRequest
    );
    }
    < /code>
    Мои вопросы: < /p>

    Поскольку этот поток включает перенаправление, я не могу включить токены (доступ /обновление) в корпус ответа. Какова лучшая практика для надежного доставки токенов после OAuth в потоке на основе перенаправления? (Например, я должен использовать файлы cookie для веб-сайтов? Одноразовые коды?) Должен ли я перенаправить на пользовательскую схему URI и обменять код/токен?


Подробнее здесь: https://stackoverflow.com/questions/795 ... obile-clie
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»