보안은 웹 애플리케이션을 개발할 때 중요한 고려 사항입니다. 사용자 데이터를 보호하고 무단 액세스를 방지하려면 신뢰할 수 있는 인증 및 권한 부여 메커니즘을 사용해야 합니다. Spring Security는 애플리케이션을 보호하기 위한 완전한 솔루션 세트를 제공하는 강력하고 널리 사용되는 보안 프레임워크입니다. 이 기사에서는 Spring Security에서 인증된 사용자와 인증되지 않은 사용자에 대한 사용자 정보를 얻는 방법을 살펴보겠습니다. PHP 편집자 Baicao는 Spring Security의 기능을 활용하여 사용자 정보를 얻고 다른 서비스 간에 사용자 정보를 공유하는 방법을 보여줍니다. 당신이 초보자이든 숙련된 개발자이든 이 글은 Spring Security에 대한 자세한 정보를 제공하고 애플리케이션의 보안을 향상시키는 데 도움이 될 것입니다.
봄휴식 서비스가 있는데, 인증유저와 비인증유저 모두 사용하고 싶습니다. 사용자가 인증되면 securitycontextholder.getcontext().getauthentication()
에서 사용자 정보를 가져오고 싶습니다.
.antmatchers("/app/rest/question/useroperation/list/**").permitall()
아래와 같이 ouath2 구성에서 사용자 정보를 얻을 수 있습니다.
인증된 사용자이지만 인증되지 않은 사용자에게는 401 오류가 발생합니다. .antmatchers("/app/rest/question/useroperation/list/**").permitall()
웹 보안에서 URL을 무시합니다.
web.ignoring()..antmatchers("/app/rest/question/useroperation/list/**")
securityconfiguration
아래와 같이 모든 사용자가 전화를 걸 수 있습니다.
서비스를 제공하지만 보안 컨텍스트에서 사용자 정보를 가져올 수 없습니다. 인증된 사용자와 인증되지 않은 사용자에 대해 URL을 호출하고 사용자가 로그인할 때 보안 컨텍스트에서 사용자 정보를 가져오도록 스프링 보안을 구성하는 방법입니다.
으아악보안 구성
@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(); } }
permitall()
仍然需要 authentication
对象出现在 securitycontext
oauth가 아닌 사용자의 경우 익명 액세스를 활성화하면 됩니다.
으아악익명 액세스는 추가 필터를 추가합니다: anonymousauthenticationfilter
到填充anonymousauthenticationtoken
作为身份验证信息的过滤器链,以防securitycontext
中没有authentication
개체
/public/authphpcnendcphp를 통해 인증 사용자를 확인하기 위한 보안 구성이 있습니다. 중국어:
위 내용은 Spring Security는 나머지 서비스에서 인증된 사용자와 인증되지 않은 사용자에 대한 사용자 정보를 가져옵니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!