Есть ли способ использовать другого поставщика OAuth2 с облачными конечными точками Google? Я имею в виду, например, получить аутентификацию от Facebook и использовать ее так же, как мы используем учетную запись Google Auth (используя javasi js и ставим класс User на @ApiMethod
)
Конечные точки Google Cloud с другим поставщиком oAuth2
Ответ 1
Нет. Я встретил кого-то другого, задающего этот вопрос, и ответ от людей google (если я правильно помню) заключался в том, что аутентификация пользователей конечных точек в настоящее время поддерживает только учетные записи Google.
Ответ 2
Вы должны реализовать свою конфигурацию Authenticator
и обновить @Api
. Основываясь на этом ответе, простой аутентификатор будет выглядеть следующим образом:
public class MyAuthenticator implements Authenticator {
@Override
public User authenticate(HttpServletRequest request) {
String token = request.getHeader("Authorization");
if (token != null) {
// apply your Facebook/Twitter/OAuth2 authentication
String user = authenticate(token);
if (user != null) {
return new User(user);
}
}
return null;
}
}
И ваше определение API
@Api(name = "example", authenticators = {MyAuthenticator.class})
Подробнее о пользовательских аутентификаторах вы найдете в документации Google.
Ответ 3
Я написал пример обмена токеном доступа Facebook для одного, сгенерированного моим приложением, и проверки его с помощью метода endpoints:
https://github.com/loudnate/appengine-endpoints-auth-example
Ответ 4
Облачные конечные точки Google позволяют восстанавливать User, HttpServletRequest и HttpServletContext в ваши API-методы, введя их как параметры.
Это не OAuth2, но вот начало решения: https://www.yanchware.com/custom-authentication-for-google-cloud-endpoints/
Предлагаемое решение заключается в том, чтобы ввести HttpServletRequest в определенные методы api для доступа к сеансу.