Wie extrahiere ich Ansprüche aus Spring Security OAuht2 Boot auf dem Ressourcenserver?

Daniel José Martínez Parra:

Ich habe einen Autorisierungsserver in .Net Core mit Identity Server 4 eingebaut ! Es funktioniert wie erwartet, um Clients und Ressourcen von Node Js und .Net zu autorisieren. Jetzt versuche ich, eine Java Spring Boot 2-API (jdk 1.8) als geschützte Ressource hinzuzufügen. Ich habe dieses Ziel mit der OAuth2-Bootdokumentation erreicht ! Bisher funktioniert alles gut. Jetzt muss ich die Ansprüche aus dem vom Autorisierungsserver generierten Zugriffstoken extrahieren. Dies ist ein Inhaber-Token vom Typ JWT. Die Implementierung, die ich dafür habe, ist die folgende:

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends ResourceServerConfigurerAdapter {
  public String resourceId;

  @Autowired
  public SecurityConfiguration(@Value("${security.oauth2.resource.id}") String resourceId) {
    this.resourceId = resourceId;
  }

@Override
  public void configure(ResourceServerSecurityConfigurer resources) {
    resources.resourceId(this.resourceId);
}

  @Override
  public void configure(HttpSecurity httpSecurity) throws Exception {
    httpSecurity
        .csrf()
        .disable()
        .authorizeRequests()
        .antMatchers("/swagger-ui.html", "/webjars/**", "/swagger-resources/**", "/**/api-docs/**", "/actuator/**")
        .permitAll()
        .and()
        .authorizeRequests().anyRequest().fullyAuthenticated();
  }

Das Problem ist, dass wenn ich versuche, auf die Ansprüche innerhalb eines Controllers zuzugreifen, diese nicht verfügbar sind. Ich habe die Standardmethode extractAuthentication von DefaultAccessTokenConverter innerhalb der Federsicherheit überprüft und ignoriert tatsächlich alle nicht standardmäßigen Ansprüche. Was mir in den Sinn kommt, ist die Erstellung eines neuen Konverters, der den DefaultAccessToken-Konverter wie folgt erweitert:

@Component
public class CustomAccessTokenConverter extends DefaultAccessTokenConverter {

  @Override
  public OAuth2Authentication extractAuthentication(Map<String, ?> claims) {
    OAuth2Authentication authentication = super.extractAuthentication(claims);
    authentication.setDetails(claims);
    return authentication;
  }
}

Aber ich habe nicht herausgefunden, wo ich diesen neuen Konverter einspeisen oder referenzieren soll.

NatFar:

Leider scheint die automatische Spring Boot-Konfiguration keine Möglichkeit zu bieten DefaultAccessTokenConverter, den Standard-Token-Konverter zu ersetzen RemoteTokenServices. Um den Konverter zu ersetzen, müssten Sie den RemoteTokenServicesstandardmäßig erstellten ersetzen .

Wenn Ihr Konverter eine Bean ist, können Sie ihn auf Ihr eigenes RemoteTokenServicesObjekt setzen, das Sie dann aktivieren können ResourceServerSecurityConfigurer(damit er OAuth2AuthenticationManagerhinter den Kulissen angewendet werden kann ):

@Configuration
@EnableResourceServer
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration extends ResourceServerConfigurerAdapter {
    // ...

    @Autowired
    private ResourceServerProperties resource;

    @Autowired
    private CustomAccessTokenConverter customConverter;

    @Override
    public void configure(ResourceServerSecurityConfigurer resources) {
        resources.tokenServices(customTokenServices());
        // ..
    }

    private RemoteTokenServices customTokenServices() {
        RemoteTokenServices services = new RemoteTokenServices();
        services.setAccessTokenConverter(this.customConverter);

        // configure based on .properties file 
        services.setCheckTokenEndpointUrl(this.resource.getTokenInfoUri());
        services.setClientId(this.resource.getClientId());
        services.setClientSecret(this.resource.getClientSecret());

        return services;
    }

    // ..


Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie kann ich Httpsecurity auf dem Ressourcenserver mithilfe von Spring Security OAuth2 in Java dynamisch konfigurieren?

Spring Boot mit Sicherheit OAuth2 - Wie verwende ich den Ressourcenserver mit dem Web-Anmeldeformular?

Eine Sicherheitsanfälligkeit auf dem spring-security-oauth2-Ressourcenserver konnte nicht behoben werden

Wie extrahiere ich mehrere Werte aus id_token_hint in bestimmte Ansprüche?

Wie extrahiere ich Guid aus dem Dateinamen?

Wie extrahiere ich varname aus dem Raster?

Wie extrahiere ich Text aus dem Zugriffsprotokoll?

Wie extrahiere ich Zeilen aus dem Datenrahmen basierend auf dem Spaltenwert in mehrere CSV-Dateien?

So extrahieren Sie Ansprüche aus dem Token in Resource Server in Spring Boot

Wie extrahiere ich Daten aus dem Web, um sie basierend auf den gegebenen Eingaben zu übertreffen?

Wie extrahiere ich einen String aus dem Tupelindex basierend auf der if-else-Bedingung in Pandas?

Wie extrahiere ich Zeilen aus einem Numpy-Array basierend auf dem Inhalt?

Wie extrahiere ich Werte aus einer Spalte basierend auf dem Zeichenfolgenwert in einer anderen Spalte?

Wie feuere ich auf dem KIE-Server bereitgestellte DRL-Regeln mit Spring Boot aus?

Spring 5 Oauth2 - Wie kann ich die URL des Prüftokens auf meinem Ressourcenserver bereitstellen?

Spring Security OAuth2 reiner Ressourcenserver

Wie extrahiere ich einen Zeitstempel aus dem Heap-Dump?

Wie extrahiere ich Daten aus dem <dc> -Tag in Java?

Wie extrahiere ich Rohdaten aus dem Plotelement in R.

Wie extrahiere ich Zeichen aus dem Array in Golang?

Wie extrahiere ich einen bestimmten Zeichenfolgenwert aus dem Antwortheader in Postman?

Wie extrahiere ich Text aus dem Bild mit Pytesseract?

Wie extrahiere ich JSON aus dem Skript mit Python?

Wie extrahiere ich eine Sicherheitskennung aus dem Mitgliedsattribut einer Gruppe?

Wie extrahiere ich den Link aus dem Selenium Webdriver Element?

Wie extrahiere ich das Datum aus dem Zeitstempel im Zeichenfolgenformat?

Wie extrahiere ich Wörter aus dem Raum in Orakel?

Wie extrahiere ich json-Objekte aus dem String Builder?

Wie extrahiere ich y-Achsenbeschriftungen aus dem Boxplot in R?

TOP Liste

  1. 1

    So legen Sie mit dem Interface Builder unterschiedliche führende Speicherplätze für unterschiedliche Geräte fest

  2. 2

    Fügen Sie eine weitere Schaltfläche zu gwt Suggest Box hinzu

  3. 3

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  4. 4

    Wie kann ich in SCSS mehrere Klassen zu einer einzigen kombinieren?

  5. 5

    Wie konvertiert man einen Datenrahmen im langen Format in eine Liste mit einem geeigneten Format?

  6. 6

    Speichern Sie ein MPAndroidChart-Diagramm in einem Bild, ohne es in einer Aktivität anzuzeigen

  7. 7

    Gruppieren Sie Datenrahmenspalten nach ihrem Datum (die Spaltentitel enthalten) und fassen Sie die Instanzen von Einsen und Nullen in R . zusammen

  8. 8

    Tomcat - Leiten Sie den alten Kontextstamm zum neuen Kontextstamm um

  9. 9

    Eclipse Oxygen - Projekte verschwinden

  10. 10

    Wie wählt man Unterschiede mit drei Tabellen aus?

  11. 11

    Tic Tac Toe-Spiel im React-Reset-Button funktioniert nicht

  12. 12

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  13. 13

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

  14. 14

    Wie kann ich den Kaskadenmodus global einstellen?

  15. 15

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  16. 16

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  17. 17

    Wie erstelle ich einen neuen übergeordneten Knoten außerhalb der .ref (/ path) in der Firebase-Echtzeitdatenbank mithilfe von Cloud-Funktionen (Typescript)?

  18. 18

    Was ist schneller: SUM über NULL oder über 0?

  19. 19

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  20. 20

    Kann ich ein Tkinter-Canvas erstellen, das mehrere Zeilen in einem Text-Widget umfasst?

  21. 21

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

heißlabel

Archiv