Spring Boot und OAuth2: Autorisierungscode abrufen

Blog

Spring Boot und OAuth2: Autorisierungscode abrufen

Abrufen des Autorisierungscodes. Benötigen Sie Hilfe bei der Implementierung von Spring Boot und OAuth2? In diesem Tutorial sehen wir uns an, wie wir die Autorisierungscode-Erteilung für Spring Boot und OAuth2 erhalten und die Client-Anwendung und -Ressource implementieren



Dazu implementieren wir die Clientanwendung und den Ressourcenserver. Den Ablauf werden wir wie folgt umsetzen:

  • Der Ressourcenbesitzer fordert die Client-Anwendung auf, Daten vom Ressourcenserver abzurufen.
  • Der Ressourcenserver fordert den Ressourcenbesitzer auf, sich selbst zu authentifizieren und die Berechtigung zum Teilen von Daten zu erteilen.
  • Nach erfolgreicher Authentifizierung teilt der Ressourcenserver einen Autorisierungscode mit der Clientanwendung

Fangen wir an, sollen wir?



Ressourcenserveranwendung

In einem anderen vorherigen Tutorial haben wir eine Anwendung mit implementiert eine einfache Anmeldeseite mit Spring Boot Security . Wir werden schnell ein ähnliches Projekt erstellen, das JSON-Daten authentifiziert und zurückgibt.

Wir werden den Autorisierungsserver konfigurieren. Das Maven-Projekt sieht wie folgt aus:



Die pom.xml fügt die Feder-Sicherheits-Oauth2 Abhängigkeit:

Class Mongodb Treibermanager nicht gefunden
4.0.0 com.oauth boot-sec 0.0.1-SNAPSHOT jar boot-resource-server Demo project for Spring Boot OAuth org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE UTF-8 UTF-8 1.8 org.springframework.security.oauth spring-security-oauth2 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-maven-plugin

Als nächstes müssen wir die Spring Boot Bootstrap-Klasse mit dem |_+_| . definieren Anmerkung.

SpringBootApplication

Definieren Sie die Modellklasse |_+_|. Wir werden auch die Modellklasse als JSON-Antwort zurückgeben.

boote centos von usb
package com.javainuse; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class SpringBootResourceServerApplication { public static void main(String[] args) { SpringApplication.run(SpringBootResourceServerApplication.class, args); } }

Definieren Sie den Controller, der einen GET REST-Endpunkt bereitstellt, um JSON als zurückzugeben:

Employee

Schließlich konfigurieren wir die Sicherheit. In dieser Konfiguration legen wir fest, welche URLs abgefangen werden sollen und welche URLs von welchen Benutzern mit welchen Rollen aufgerufen werden können.

package com.javainuse.model; public class Employee { private String empId; private String empName; public String getEmpId() { return empId; } public void setEmpId(String empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName(String empName) { this.empName = empName; } @Override public String toString() { return 'Employee [empId=' + empId + ', empName=' + empName + ']'; } }

Als nächstes konfigurieren wir einen Autorisierungsserver mit dem |_+_| Anmerkung.

Der Server wird angepasst, indem die Klasse |_+_| erweitert wird, die leere Methodenimplementierungen für das Interface |_+_| bereitstellt.

Der Autorisierungsserver sichert den Autorisierungsendpunkt nicht, d. h. /oauth/autorisieren . Die Methode configure fügt hier den Spring Security-Authentifizierungsmanager ein.

Mit dem In-Memory-Client-Dienst richten wir die Clients ein, die auf den Server zugreifen können.

package com.javainuse.controllers; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.javainuse.model.Employee; @Controller public class EmployeeController { @RequestMapping(value = '/user/getEmployeesList', produces = 'application/json') @ResponseBody public List getEmployeesList() { List employees = new ArrayList(); Employee emp = new Employee(); emp.setEmpId('emp1'); emp.setEmpName('emp1'); employees.add(emp); return employees; } }

Kundenanwendung

Wir erstellen die Client-Anwendung. Diese Anwendung fragt den oben erstellten Ressourcenserver nach JSON-Daten.

Wie bereits erläutert, gehen wir davon aus, dass diese Client-Anwendung bereits beim Ressourcenserver registriert ist und die Client-ID als 'javainuse' und geheimer Schlüssel als 'geheim'.

Gemäß der OAuth-Spezifikation sollte die Autorisierung beim Standard-URI angefordert werden /autorisieren .

Wir können diesen Standard-URI je nach Anforderung ändern, aber in diesem Beispiel verwenden wir den Standard-URI.

Zusammen mit der Standard-URI sollten wir auch die folgenden Parameter senden:

  • Der Ressourcenbesitzer fordert die Client-Anwendung auf, Daten vom Ressourcenserver abzurufen.
  • Der Ressourcenserver fordert den Ressourcenbesitzer auf, sich selbst zu authentifizieren und die Berechtigung zum Teilen von Daten zu erteilen.
  • Nach erfolgreicher Authentifizierung teilt der Ressourcenserver einen Autorisierungscode mit der Clientanwendung

Die obigen Parameter sollten im Format application/x-www-form-urlencoded vorliegen. Beginnen wir also mit der Implementierung.

Kopf () r

Das Maven-Projekt sieht wie folgt aus:

Die pom.xml sieht wie folgt aus:

package com.javainuse.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; @Configuration @EnableWebSecurity public class EmployeeSecurityConfiguration extends WebSecurityConfigurerAdapter { @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers('/resources/**'); } @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers('/').permitAll().antMatchers('/user/getEmployeesList') .hasAnyRole('ADMIN').anyRequest().authenticated().and().formLogin() .permitAll().and().logout().permitAll(); http.csrf().disable(); } @Override public void configure(AuthenticationManagerBuilder authenticationMgr) throws Exception { authenticationMgr.inMemoryAuthentication().withUser('admin').password('admin') .authorities('ROLE_ADMIN'); } }

Jetzt müssen wir die |_+_| . erstellen Klasse mit dem |_+_| -Methode, die eine Seite zurückgibt.

aol-E-Mail-Konto wiederherstellen
EnableAuthorizationServer

Definieren Sie als Nächstes die folgenden Eigenschaften:

AuthorizationServerConfigurerAdapter

Erstellen Sie dann die Spring Boot-Bootstrap-Klasse mit dem |_+_| Anmerkung.

AuthorizationServerConfigurer

Als nächstes erstellen Sie die getEmployees.jsp, an die wir eine Anfrage senden werden /autorisieren die Form des codierten URL-Formats.

package com.javainuse.config; import org.springframework.context.annotation.Configuration; import org.springframework.security.oauth2.config.annotation.configurers.ClientDetailsServiceConfigurer; import org.springframework.security.oauth2.config.annotation.web.configuration.AuthorizationServerConfigurerAdapter; import org.springframework.security.oauth2.config.annotation.web.configuration.EnableAuthorizationServer; @Configuration @EnableAuthorizationServer public class AuthorizationServerConfig extends AuthorizationServerConfigurerAdapter { @Override public void configure(ClientDetailsServiceConfigurer clients) throws Exception { clients.inMemory().withClient('javainuse').secret('secret').authorizedGrantTypes('authorization_code') .scopes('read').authorities('CLIENT'); } }

Als nächstes starten Sie den Boot-Ressourcen-Server und die Boot-Client-Anwendung. Gehen Sie zu localhost:8090/getEmployees. Klicken Sie dann auf die Schaltfläche Mitarbeiterinformationen abrufen:

Geben Sie die Anmeldeinformationen als 'admin' und 'admin' ein.

Autorisieren Sie dann den Ressourcenbesitzer, die Daten freizugeben.

Pascal Coin Wallet Adresse

Wir können sehen, dass der Ressourcenbesitzer den Autorisierungscode mit der Clientanwendung teilt.

Den Quellcode können Sie hier herunterladen:

  • Der Ressourcenbesitzer fordert die Client-Anwendung auf, Daten vom Ressourcenserver abzurufen.
  • Der Ressourcenserver fordert den Ressourcenbesitzer auf, sich selbst zu authentifizieren und die Berechtigung zum Teilen von Daten zu erteilen.
  • Nach erfolgreicher Authentifizierung teilt der Ressourcenserver einen Autorisierungscode mit der Clientanwendung

#java #frühling

codequs.com

Spring Boot und OAuth2: Autorisierungscode abrufen

Abrufen des Autorisierungscodes. Benötigen Sie Hilfe bei der Implementierung von Spring Boot und OAuth2? In diesem Tutorial sehen wir uns an, wie wir die Autorisierungscode-Erteilung für Spring Boot und OAuth2 erhalten und die Client-Anwendung und -Ressource implementieren