Опубликован пакет AspNetCore.Firebase.Authentication 2.0, который поддерживает .aspnetcore2.0

рабатываю простой API, который обрабатывает аутентификацию, созданную Firebase - для последующего использования с клиентами Android.

Поэтому в консоли Firebase я включил методы входа в Facebook и Google и создал образец html-страницы, который я могу использовать для проверки метода входа в систему - эта следующая функция вызывается кнопкой:

function loginFacebook() {
        var provider = new firebase.auth.FacebookAuthProvider();
        var token = "";
        firebase.auth().signInWithPopup(provider).then(function (result) {
            var token = result.credential.accessToken;
            var user = result.user;
            alert("login OK");
            user.getToken().then(function (t) {
                token = t;
                loginAPI();
            });
        }).catch(function (error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            alert(errorCode + " - " + errorMessage);
        });
    }

затем я использую токен и отправляю его в свой API с помощью простого вызова ajax из jQuery здесь:

function loginAPI()
{
    $.ajax({
        url: "http://localhost:58041/v1/Users/",
        dataType: 'json',
        type: 'GET',
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Accept", "application/json");
            xhr.setRequestHeader("Content-Type", "application/json");
            xhr.setRequestHeader("Authorization", "Bearer " + token);
        },
        error: function (ex) {
            console.log(ex.status + " - " + ex.statusText);
        },
        success: function (data) {
            console.log(data);
            return data;
        }
    });
}

Следующая остановка: API-интерфейс - написанный на .NET Core.

Под Startup я настроил аутентификацию JwtBearer (пакетMicrosoft.AspNetCore.Authentication.JwtBearer):

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
    AutomaticAuthenticate = true,
    IncludeErrorDetails = true,
    Authority = "https://securetoken.google.com/PROJECT-ID",
    TokenValidationParameters = new TokenValidationParameters
    {  
        ValidateIssuer = true,
        ValidIssuer = "https://securetoken.google.com/PROJECT-ID",
        ValidateAudience = true,
        ValidAudience = "PROJECT-ID",
        ValidateLifetime = true,
    },
});

А вот код контроллера - с[Authorize] атрибут:

[Authorize]
[Route("v1/[controller]")]
public class UsersController : Controller
{
    private readonly ILogger _logger;
    private readonly UserService _userService;

    public UsersController(ILogger<UsersController> logger, UserService userService)
    {
        _logger = logger;
        _userService = userService;
    }

    [HttpGet]
    public async Task<IList<User>> Get()
    {
        return await _userService.GetAll();
    }
}

Ответ API - 200 ОК (HttpContext.User.Identity.IsAuthenticated являетсяtrue внутри контроллера), но я думаю, что не должно. Моя проблема в том, что я не совсем уверен, что это безопасно.

Как это проверяет часть подписи токена JWT? Я видел много примеров кода, упоминающих алгоритм x509 или RS256, где они подходят для этого? Не следует проверять какой-либо сертификат или закрытый ключ сIssuerSigningKey или жеTokenDecryptionKey отTokenValidationParameters учебный класс? Что мне не хватает?

Соответствующие источники знаний о проблеме:

https://blog.markvincze.com/secure-an-asp-net-core-api-with-firebase/SPA - Аутентификация Firebase и .Net WebApi 2https://stormpath.com/blog/token-authentication-asp-net-corehttps://jwt.io/https://firebase.google.com/docs/auth/admin/verify-id-tokens

Ответы на вопрос(3)

Ваш ответ на вопрос