В этой главе мы рассмотрим, как добавить вход в Google OAuth2 с помощью приложения Spring Boot со сборкой Gradle.
Сначала добавьте зависимость безопасности Spring Boot OAuth2 в свой файл конфигурации сборки, и ваш файл конфигурации сборки приведен ниже.
buildscript { ext { springBootVersion = '1.5.8.RELEASE' } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") } } apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'org.springframework.boot' group = 'com.tutorialspoint.projects' version = '0.0.1-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter') testCompile('org.springframework.boot:spring-boot-starter-test') compile('org.springframework.security.oauth:spring-security-oauth2') compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') }
Теперь добавьте конечную точку HTTP для чтения Принципала пользователя из Google после аутентификации через Spring Boot в основном файле класса Spring Boot, как показано ниже —
package com.tutorialspoint.projects.googleservice; import java.security.Principal; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @SpringBootApplication @RestController public class GoogleserviceApplication { public static void main(String[] args) { SpringApplication.run(GoogleserviceApplication.class, args); } @RequestMapping(value = "/user") public Principal user(Principal principal) { return principal; } }
Теперь напишите файл конфигурации, чтобы включить OAuth2SSO для веб-безопасности, и удалите аутентификацию для файла index.html, как показано ниже:
package com.tutorialspoint.projects.googleservice; import org.springframework.boot.autoconfigure.security.oauth2.client.EnableOAuth2Sso; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration @EnableOAuth2Sso public class WebSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf() .disable() .antMatcher("/**") .authorizeRequests() .antMatchers("/", "/index.html") .permitAll() .anyRequest() .authenticated(); } }
Затем добавьте файл index.html в разделе статических ресурсов и добавьте ссылку для перенаправления в конечную точку HTTP пользователя, чтобы прочитать Принципал пользователя Google, как показано ниже —
<!DOCTYPE html> <html> <head> <meta charset = "ISO-8859-1"> <title>Insert title here</title> </head> <body> <a href = "user">Click here to Google Login</a> </body> </html>
Примечание. В консоли Google Cloud — включите API-интерфейс служб Gmail, Analytics Services и Google+.
Затем перейдите в раздел «Учетные данные», создайте учетные данные и выберите «Идентификатор клиента OAuth».
Затем укажите название продукта на экране согласия OAuth2.
Затем выберите «Тип приложения» в качестве «Веб-приложения», предоставьте авторизованные источники JavaScript и авторизованные URI перенаправления.
Теперь ваш OAuth2 Client Id и Client Secret созданы.
Затем добавьте Client Id и Client Secret в файл свойств вашего приложения.
security.oauth2.client.clientId = <CLIENT_ID> security.oauth2.client.clientSecret = <CLIENT_SECRET> security.oauth2.client.accessTokenUri = https://www.googleapis.com/oauth2/v3/token security.oauth2.client.userAuthorizationUri = https://accounts.google.com/o/oauth2/auth security.oauth2.client.tokenName = oauth_token security.oauth2.client.authenticationScheme = query security.oauth2.client.clientAuthenticationScheme = form security.oauth2.client.scope = profile email security.oauth2.resource.userInfoUri = https://www.googleapis.com/userinfo/v2/me security.oauth2.resource.preferTokenInfo = false
Теперь вы можете создать исполняемый файл JAR и запустить приложение Spring Boot с помощью следующей команды Gradle.
Для Gradle вы можете использовать команду, как показано на рисунке —
gradle clean build
После «BUILD SUCCESSFUL» вы можете найти файл JAR в каталоге build / libs.
Запустите файл JAR с помощью команды java –jar <JARFILE>, и приложение будет запущено на порт Tomcat 8080.
Теперь нажмите URL-адрес http: // localhost: 8080 / и нажмите ссылку для входа в Google.
Он будет перенаправлен на экран входа в Google и предоставит данные для входа в Gmail.
В случае успешного входа в систему мы получим объект Principal пользователя Gmail.