Inhaltsverzeichnis
Frageninhalt
Workaround
Heim Java Problem mit der rollenbasierten Autorisierung von Spring Security: 403 Verbotener Fehler

Problem mit der rollenbasierten Autorisierung von Spring Security: 403 Verbotener Fehler

Feb 09, 2024 am 11:21 AM
spring security

Spring Security ist ein leistungsstarkes Sicherheitsframework zum Schutz von Anwendungen vor böswilligen Angriffen. Bei Verwendung von Spring Security können Rollenautorisierungsprobleme zu 403 Forbidden-Fehlern führen. Der PHP-Editor Banana stellt Ihnen dieses Problem ausführlich vor und bietet eine Lösung, die Ihnen hilft, das Problem der Rollenberechtigung erfolgreich zu lösen. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, hilft Ihnen dieser Artikel dabei, den Rollenautorisierungsmechanismus von Spring Security genau zu verstehen und zu lernen, mit 403 Forbidden-Fehlern richtig umzugehen.

Frageninhalt

Frage:

Ich versuche, einen Spring-basierten Webserver mit rollenbasierter Authentifizierung zu erstellen, erhalte jedoch ständig die Fehlermeldung 403 verboten. Ich habe eine benutzerdefinierte userdetails-Klasse implementiert und vermute, dass ein Problem mit meiner Konfiguration vorliegt.

Code:

Anpassung userdetails:

public class customuserdetails implements userdetails {
    private static final long serialversionuid = 1l;
    private final user user;

    public customuserdetails(user user) {
        this.user = user;
    }

    @override
    public collection<? extends grantedauthority> getauthorities() {
        return user.getroles().stream().map(r -> new simplegrantedauthority("role_" + r.getname())).tolist();
    }

    // ... other userdetails methods
}
Nach dem Login kopieren

securityfilterchain Umsetzung:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    return http
        .csrf(csrf -> csrf.disable())
        .sessionManagement(sess -> sess.sessionCreationPolicy(SessionCreationPolicy.STATELESS))
        .authorizeHttpRequests(requests -> requests
            .requestMatchers("/api/**").permitAll()
            .requestMatchers("/secret/**").hasAuthority("USER")
            .anyRequest().authenticated())
        .oauth2ResourceServer(oauth2 -> oauth2.jwt(Customizer.withDefaults()))
        .addFilterBefore(authorizeFilter, UsernamePasswordAuthenticationFilter.class)
        .build();
}
Nach dem Login kopieren

Ich habe eine benutzerdefinierte userdetails 类并配置了 spring security 以进行基于角色的身份验证。但是,即使我相信角色已正确分配,我仍然遇到 403 forbidden 错误。我尝试同时使用 hasrolehasauthority Klasse implementiert und Spring Security für die rollenbasierte Authentifizierung konfiguriert. Obwohl ich glaube, dass die Rollen korrekt zugewiesen sind, erhalte ich dennoch die Fehlermeldung 403 verboten. Ich habe versucht, sowohl hasrole als auch hasauthority zu verwenden, aber das Problem besteht weiterhin. Was fehlt in meiner Konfiguration?

Jede Einsicht oder Anregung wäre sehr dankbar. Danke!

Workaround

Für Ressourcenserver mit JWT werden Berechtigungen vom Authentifizierungskonverter festgelegt.

Der Standard-Authentifizierungskonverter ist JwtAuthenticarionConverter,它将权限转换委托给可配置的权限转换器(默认使用 scope 声明中的条目添加 SCOPE_ Präfix).

Sie können einen mit einem anderen Berechtigungskonverter konfigurierten Konverter bereitstellen JwtAuthenticationConverter (一个使用另一个声明作为权限源),或者切换到完全不同的 Converter<Jwt,?使用 <code>http.oauth2ResourceServer 扩展 AbstractAuthenticationToken>(oauth2-> oauth2.jwt(Jwt -> jwt.jwtAuthenticationConverter(...))

Sie können auch diesen zusätzlichen Starter in Betracht ziehen Ich verwalte ihn mithilfe einer konfigurierbaren Berechtigungskonverter-Anwendungseigenschaft (es sei denn, Sie geben Ihre eigene Berechtigung oder Ihren eigenen Authentifizierungskonverter in der Konfiguration an)

Sie können versuchen, die TRACE-Protokolle von Spring zu öffnen und herauszufinden, wo das Problem liegt tritt ein. Dieser Vorschlag hilft Ihnen vielleicht nicht direkt, aber er hat uns dabei geholfen, den Grund herauszufinden, warum die API bei der Migration auf Springboot3.0

403 zurückgibt

Das obige ist der detaillierte Inhalt vonProblem mit der rollenbasierten Autorisierung von Spring Security: 403 Verbotener Fehler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Spring Security 6: cors() ist veraltet und zum Entfernen markiert Spring Security 6: cors() ist veraltet und zum Entfernen markiert Feb 10, 2024 pm 11:45 PM

我有下面的代码:publicSecurityFilterChainsecurityFilterChain(HttpSecurityhttp)throwsException{returnhttp.httpBasic().disable().cors().and().csrf().disable().authorizeHttpRequests().requestMatchers("

So entwickeln Sie ein Spring Security SAML-basiertes Single-Sign-On-System mit Java So entwickeln Sie ein Spring Security SAML-basiertes Single-Sign-On-System mit Java Sep 22, 2023 am 08:49 AM

So entwickeln Sie mit Java ein Single-Sign-On-System basierend auf SpringSecuritySAML. Einführung: Mit der rasanten Entwicklung des Internets werden immer mehr Anwendungen entwickelt. In diesen Anwendungen ist die Benutzeranmeldung eine der häufigsten Funktionen. Bei Anwendungen auf Unternehmensebene müssen sich Benutzer jedoch bei mehreren Systemen anmelden, was zu einer sehr schlechten Benutzeranmeldeerfahrung führt. Um dieses Problem zu lösen, wurde das Single-Sign-On-System (SingleSign-On, kurz SSO) entwickelt. einfach

GO-Zugriffstoken authentifizieren (Keycloak) GO-Zugriffstoken authentifizieren (Keycloak) Feb 09, 2024 am 09:30 AM

Ich versuche, die Zugriffstoken-Validierung mit GO zu implementieren. Aber die Beispiele, die ich online gesehen habe, scheinen nur TOKEN_SECRET zu verwenden, um es zu überprüfen. Aber ich bin es gewohnt, in Javaspring zu programmieren und muss TOKEN_SECRET nicht verwenden. Ich stelle einfach den jwk-set-uri bereit und er prüft die Gültigkeit (automatische Sicherheitsfilter usw.) und ich weiß, dass er mit dem OAuth-Server kommuniziert und diese Validierung durchführt. Gibt es in Go keine Bibliothek, die durch eine Anfrage an den OAuth-Server prüfen kann, ob das Token gültig ist? Ich weiß, dass ich dies manuell tun kann, indem ich eine Anfrage an den Benutzerinfo-Endpunkt des OAuth-Servers stelle: http://localh

Nutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework Nutzungshandbuch für das Spring Security-Berechtigungskontroll-Framework Feb 18, 2024 pm 05:00 PM

In Back-End-Managementsystemen ist in der Regel eine Zugriffsberechtigungskontrolle erforderlich, um den Zugriff verschiedener Benutzer auf Schnittstellen einzuschränken. Fehlen einem Benutzer bestimmte Berechtigungen, kann er auf bestimmte Schnittstellen nicht zugreifen. In diesem Artikel wird das Waynboot-Mall-Projekt als Beispiel verwendet, um vorzustellen, wie gängige Back-End-Verwaltungssysteme das Berechtigungskontroll-Framework SpringSecurity einführen. Die Gliederung lautet wie folgt: waynboot-mall-Projektadresse: https://github.com/wayn111/waynboot-mall 1. Was ist SpringSecurity? SpringSecurity ist ein Open-Source-Projekt, das auf dem Spring-Framework basiert und darauf abzielt, leistungsstarke und flexible Sicherheit bereitzustellen für Java-Anwendungen.

So entwickeln Sie mit Java ein Single-Sign-On-System basierend auf Spring Security OAuth2 So entwickeln Sie mit Java ein Single-Sign-On-System basierend auf Spring Security OAuth2 Sep 20, 2023 pm 01:06 PM

So verwenden Sie Java, um ein Single-Sign-On-System basierend auf SpringSecurityOAuth2 zu entwickeln. Einführung: Mit der rasanten Entwicklung des Internets erfordern immer mehr Websites und Anwendungen, dass sich Benutzer anmelden, aber Benutzer möchten sich nicht für jede Website oder Anwendung merken. Eine Kontonummer und ein Passwort. Das Single-Sign-On-System (SingleSign-On, kurz SSO) kann dieses Problem lösen, indem es Benutzern den Zugriff auf mehrere Websites und Anwendungen ohne wiederholte Authentifizierung nach einmaliger Anmeldung ermöglicht. In diesem Artikel wird vorgestellt

Spring Security ruft Benutzerinformationen für authentifizierte und nicht authentifizierte Benutzer in den verbleibenden Diensten ab Spring Security ruft Benutzerinformationen für authentifizierte und nicht authentifizierte Benutzer in den verbleibenden Diensten ab Feb 08, 2024 pm 11:00 PM

Ich habe einen Springrest-Dienst und möchte ihn sowohl für authentifizierte als auch für nicht authentifizierte Benutzer verwenden. Wenn der Benutzer authentifiziert ist, möchte ich die Benutzerinformationen von securitycontextholder.getcontext().getauthentication() abrufen. Wenn ich .antmatchers("/app/rest/question/useroperation/list/**").permitall() in der ouath2-Konfiguration wie unten gezeigt verwende, kann ich die Benutzerinformationen des authentifizierten Benutzers abrufen, nicht jedoch der authentifizierten Benutzer erscheint 40

Das Java RESTful API-Kochbuch: Den perfekten Service für jede Anwendung erstellen Das Java RESTful API-Kochbuch: Den perfekten Service für jede Anwendung erstellen Mar 27, 2024 pm 12:11 PM

Einführung In der heutigen vernetzten Welt sind RESTful-APIs zu einem Schlüsselmechanismus für die Kommunikation zwischen Anwendungen geworden. Mit Java, einer leistungsstarken Programmiersprache, können Sie effiziente, skalierbare und gut verwaltete RESTful-APIs erstellen. Kapitel 1: RESTfulAPI-Grundlagen, Prinzipien und Best Practices der RESTful-Architektur HTTP-Methoden, Statuscodes und Antwortheader Datenformate wie JSON und XML Kapitel 2: Design und Modellierung RESTfulAPI RESTfulAPI-Designprinzipien Ressourcenmodellierung und URI-Design Versionskontrolle und HATEOAS Kapitel 3: Verwendung SpringBoot zum Erstellen einer RESTful-API SpringBoot-Einführung und erste Schritte beim Erstellen und

Verwendung von Spring Security OAuth für sichere Autorisierung in der Java-API-Entwicklung Verwendung von Spring Security OAuth für sichere Autorisierung in der Java-API-Entwicklung Jun 18, 2023 am 08:01 AM

Eine häufige Anforderung bei der JavaAPI-Entwicklung ist die Implementierung von Benutzerauthentifizierungs- und Autorisierungsfunktionen. Um sicherere und zuverlässigere API-Dienste bereitzustellen, ist die Autorisierungsfunktion besonders wichtig geworden. SpringSecurityOAuth ist ein hervorragendes Open-Source-Framework, das uns bei der Implementierung von Autorisierungsfunktionen in JavaAPI helfen kann. In diesem Artikel wird erläutert, wie Sie SpringSecurityOAuth für die sichere Autorisierung verwenden. Was ist SpringSecurity?