Интеграция Google ClassRoom OAuth Spring Boot - PullRequest
0 голосов
/ 09 июля 2020

Я создаю веб-приложение с помощью Spring Boot и JSF, и я намерен создать курсы в классе google из моего приложения.

Я последовал примеру Google, чтобы аутентифицироваться с помощью Oauth: https://url.miapp.io/oS2mx

Реализуйте этот класс ClassroomQuickstart из примера, но когда вы используете метод getService () в моем веб-приложении, он отправляет мне в Tomcat Embeded Console (Spring Boot) URL-адрес Google для аутентификации самостоятельно из браузера, и я могу продолжить выполнение своего кода.

Другими словами, аутентификация работает в интерактивном режиме, ожидая, пока я аутентифицируюсь из браузера, чтобы приложение могло продолжить поток выполнения, я не «Не знаю, что мне делать, чтобы мне не приходилось аутентифицироваться таким образом, я не знаю, это ли код, реализующий это как есть, или имеет отношение к конфигурации в консоли разработчика Google.

1 Ответ

0 голосов
/ 14 июля 2020

трехсторонний OAuth:

В настоящее время вы используете трехсторонний процесс OAuth, в котором участвуют три стороны: (# 1) конечный пользователь, (# 2) приложение и (# 3 ) сервер авторизации. В этом потоке OAuth пользователи должны дать явное согласие приложению через браузер через экран согласия .

Двухсторонний OAuth:

Поскольку вы хотите избежать что вам следует использовать учетную запись службы для доступа к этому приложению, чтобы пользователи не участвовали напрямую и согласие пользователя не требовалось . Этот рабочий процесс обычно называется двухсторонним OAuth (задействованы только приложение и сервер авторизации). См. Использование OAuth 2.0 для серверных приложений для более подробного объяснения.

Поскольку вы не хотите, чтобы учетная запись службы запускала приложение сама по себе, а действовала от имени других учетных записей в домене, вы должны предоставить ему полномочия на уровне домена, чтобы он мог олицетворять другие учетные записи в домене .

Рабочий процесс:

Для этого, вам необходимо выполнить следующие действия:

  • Создайте учетную запись службы, следуя этому руководству .
  • Делегировать полномочия на уровне домена учетной записи службы (необходимо быть администратором домена для этого): этот шаг разрешает учетной записи службы доступ к данным от имени любого пользователя в домене. Выполните шаги, указанные здесь .
  • После делегирования полномочий на уровне домена вам необходимо изменить код, связанный с созданием учетных данных OAuth. Используйте, например, образец кода, приведенный в этот ответ :
GoogleCredential credential = new GoogleCredential.Builder()
    .setTransport(HTTP_TRANSPORT)
    .setJsonFactory(JSON_FACTORY)
    .setServiceAccountId("service-account@email-address") // Service account email
    .setServiceAccountPrivateKeyFromP12File(new File("your-credentials.p12"))
    .setServiceAccountScopes(Collections.singleton(ClassroomScopes.CLASSROOM_COURSES))
    .setServiceAccountUser("user@email-address") // Your email address (address of the user you want to impersonate)
    .build();

В этом случае user@email-address относится к учетной записи, от имени которой курс должен быть создан. Другими словами, это будет учетная запись, которую учетная запись службы должна олицетворять. Что касается файла P12, его следует загрузить из Cloud Console, как описано здесь . Это можно сделать с помощью файла JSON вместо P12 (см. здесь ).

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...