

Spring Security ruft Benutzerinformationen für authentifizierte und nicht authentifizierte Benutzer in den verbleibenden Diensten ab
Sicherheit ist ein wichtiger Aspekt bei der Entwicklung von Webanwendungen. Um Benutzerdaten zu schützen und unbefugten Zugriff zu verhindern, müssen wir einen zuverlässigen Authentifizierungs- und Autorisierungsmechanismus verwenden. Spring Security ist ein leistungsstarkes und weit verbreitetes Sicherheitsframework, das umfassende Lösungen zum Schutz unserer Anwendungen bietet. In diesem Artikel erfahren Sie, wie Sie in Spring Security Benutzerinformationen für authentifizierte und nicht authentifizierte Benutzer erhalten. Der PHP-Editor Baicao zeigt Ihnen, wie Sie die Funktionen von Spring Security nutzen, um Benutzerinformationen abzurufen und Benutzerinformationen zwischen verschiedenen Diensten auszutauschen. Unabhängig davon, ob Sie Anfänger oder erfahrener Entwickler sind, bietet Ihnen dieser Artikel detaillierte Informationen zu Spring Security und hilft Ihnen, die Sicherheit Ihrer Anwendung zu verbessern.
Frageninhalt
Ich habe einen Frühlingsruhedienst und möchte ihn sowohl für authentifizierte als auch für nicht authentifizierte Benutzer nutzen. Wenn der Benutzer authentifiziert ist, möchte ich die Benutzerinformationen von securitycontextholder.getcontext().getauthentication()
erhalten.
- Wenn ich benutze
.antmatchers("/app/rest/question/useroperation/list/**").permitall()
In der unten gezeigten ouath2-Konfiguration kann ich dann die Benutzerinformationen abrufen Authentifizierte Benutzer, nicht authentifizierte Benutzer erhalten jedoch einen 401-Fehler. - Wenn ich
.antmatchers("/app/rest/question/useroperation/list/**").permitall()
und ignorieren Sie die URL in der Websicherheitweb.ignoring()..antmatchers("/app/rest/question/useroperation/list/**")
Insecurityconfiguration
wie unten können dann alle Benutzer anrufen Dienst, aber ich kann die Benutzerinformationen nicht aus dem Sicherheitskontext abrufen.
Wie konfiguriere ich meine Spring-Sicherheit so, dass sie die URL für authentifizierte und nicht authentifizierte Benutzer aufruft und die Benutzerinformationen aus dem Sicherheitskontext erhält, wenn sich der Benutzer anmeldet?
@configuration @enableresourceserver protected static class resourceserverconfiguration extends resourceserverconfigureradapter { @inject private http401unauthorizedentrypoint authenticationentrypoint; @inject private ajaxlogoutsuccesshandler ajaxlogoutsuccesshandler; @override public void configure(httpsecurity http) throws exception { http .exceptionhandling() .authenticationentrypoint(authenticationentrypoint) .and() .logout() .logouturl("/app/logout") .logoutsuccesshandler(ajaxlogoutsuccesshandler) .and() .csrf() .requirecsrfprotectionmatcher(new antpathrequestmatcher("/oauth/authorize")) .disable() .headers() .frameoptions().disable() .sessionmanagement() .sessioncreationpolicy(sessioncreationpolicy.stateless) .and() .authorizerequests() .antmatchers("/views/**").permitall() .antmatchers("/app/rest/authenticate").permitall() .antmatchers("/app/rest/register").permitall() .antmatchers("/app/rest/question/useroperation/list/**").permitall() .antmatchers("/app/rest/question/useroperation/comment/**").authenticated() .antmatchers("/app/rest/question/useroperation/answer/**").authenticated() .antmatchers("/app/rest/question/definition/**").hasanyauthority(authoritiesconstants.admin) .antmatchers("/app/rest/logs/**").hasanyauthority(authoritiesconstants.admin) .antmatchers("/app/**").authenticated() .antmatchers("/websocket/tracker").hasauthority(authoritiesconstants.admin) .antmatchers("/websocket/**").permitall() .antmatchers("/metrics/**").hasauthority(authoritiesconstants.admin) .antmatchers("/health/**").hasauthority(authoritiesconstants.admin) .antmatchers("/trace/**").hasauthority(authoritiesconstants.admin) .antmatchers("/dump/**").hasauthority(authoritiesconstants.admin) .antmatchers("/shutdown/**").hasauthority(authoritiesconstants.admin) .antmatchers("/beans/**").hasauthority(authoritiesconstants.admin) .antmatchers("/info/**").hasauthority(authoritiesconstants.admin) .antmatchers("/autoconfig/**").hasauthority(authoritiesconstants.admin) .antmatchers("/env/**").hasauthority(authoritiesconstants.admin) .antmatchers("/trace/**").hasauthority(authoritiesconstants.admin) .antmatchers("/api-docs/**").hasauthority(authoritiesconstants.admin) .antmatchers("/protected/**").authenticated(); } }
Sicherheitskonfiguration
@Configuration @EnableWebSecurity public class SecurityConfiguration extends WebSecurityConfigurerAdapter { @Inject private UserDetailsService userDetailsService; @Bean public PasswordEncoder passwordEncoder() { return new StandardPasswordEncoder(); } @Inject public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { auth .userDetailsService(userDetailsService) .passwordEncoder(passwordEncoder()); } @Override public void configure(WebSecurity web) throws Exception { web.ignoring() .antMatchers("/bower_components/**") .antMatchers("/fonts/**") .antMatchers("/images/**") .antMatchers("/scripts/**") .antMatchers("/styles/**") .antMatchers("/views/**") .antMatchers("/i18n/**") .antMatchers("/swagger-ui/**") .antMatchers("/app/rest/register") .antMatchers("/app/rest/activate") .antMatchers("/app/rest/question/useroperation/list/**") .antMatchers("/console/**"); } @EnableGlobalMethodSecurity(prePostEnabled = true, jsr250Enabled = true) private static class GlobalSecurityConfiguration extends GlobalMethodSecurityConfiguration { @Override protected MethodSecurityExpressionHandler createExpressionHandler() { return new OAuth2MethodSecurityExpressionHandler(); } } }
Lösung
permitall()
仍然需要 authentication
对象出现在 securitycontext
in.
Für nicht-authentifizierte Benutzer kann dies erreicht werden, indem der anonyme Zugriff aktiviert wird:
@override public void configure(httpsecurity http) throws exception { http //some configuration .and() .anonymous() //allow anonymous access .and() .authorizerequests() .antmatchers("/views/**").permitall() //other security settings
Anonymer Zugriff fügt zusätzlichen Filter hinzu: anonymousauthenticationfilter
到填充anonymousauthenticationtoken
作为身份验证信息的过滤器链,以防securitycontext
中没有authentication
Objekt
Ich habe diese Sicherheitskonfiguration zur Überprüfung des Autors über /public/authphpcnendcphp Chinesisch:
@Override protected void configure(HttpSecurity http) throws Exception { http.cors().and().authorizeRequests() .antMatchers("/api/skills/**", "/api/profile/**", "/api/info/**").authenticated() .antMatchers("/api/**").hasAuthority(Role.ROLE_ADMIN.getAuthority()) .antMatchers("/public/auth").permitAll() .and().httpBasic() .and().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS) .and().csrf().disable(); } @GetMapping(value = "/public/auth") private ResponseEntity<User> getAuthUser(@AuthenticationPrincipal AuthUser authUser) { return authUser == null ? ResponseEntity.notFound().build() : ResponseEntity.ok(authUser.getUser()); }
Das obige ist der detaillierte Inhalt vonSpring Security ruft Benutzerinformationen für authentifizierte und nicht authentifizierte Benutzer in den verbleibenden Diensten ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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

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

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

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 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

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

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

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?