คำถามติดแท็ก spring-security

Spring Security เป็นโซลูชันการรักษาความปลอดภัยแอปพลิเคชันของ Spring Framework Spring security สามารถใช้เพื่อรักษาความปลอดภัย URL และการเรียกใช้เมธอด มีการใช้กันอย่างแพร่หลายเพื่อรักษาความปลอดภัยเว็บแอ็พพลิเคชันแบบสแตนด์อโลนพอร์ตเล็ตและแอ็พพลิเคชัน REST ที่เพิ่มมากขึ้น

13
วิธีแก้ไข Hibernate LazyInitializationException: ล้มเหลวในการเริ่มต้นชุดบทบาทอย่างเกียจคร้านไม่สามารถเตรียมใช้งานพร็อกซีได้ - ไม่มีเซสชัน
ใน AuthenticationProvider แบบกำหนดเองจากโครงการฤดูใบไม้ผลิของฉันฉันกำลังพยายามอ่านรายชื่อหน่วยงานของผู้ใช้ที่เข้าสู่ระบบ แต่ฉันพบข้อผิดพลาดต่อไปนี้: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.horariolivre.entity.Usuario.autorizacoes, could not initialize proxy - no Session at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:566) at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:186) at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:545) at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:124) at org.hibernate.collection.internal.PersistentBag.iterator(PersistentBag.java:266) at com.horariolivre.security.CustomAuthenticationProvider.authenticate(CustomAuthenticationProvider.java:45) at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156) at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:177) at org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter.attemptAuthentication(UsernamePasswordAuthenticationFilter.java:94) at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:211) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57) at …


11
จัดการข้อยกเว้นการตรวจสอบความปลอดภัยในฤดูใบไม้ผลิด้วย @ExceptionHandler
ฉันใช้ Spring MVC @ControllerAdviceและ@ExceptionHandlerจัดการข้อยกเว้นทั้งหมดของ REST Api ใช้งานได้ดีสำหรับข้อยกเว้นที่ส่งโดยตัวควบคุมเว็บ mvc แต่ไม่ได้ผลสำหรับข้อยกเว้นที่เกิดจากตัวกรองแบบกำหนดเองสำหรับการรักษาความปลอดภัยแบบสปริงเนื่องจากทำงานก่อนที่จะเรียกใช้เมธอดคอนโทรลเลอร์ ฉันมีตัวกรองความปลอดภัยแบบสปริงที่กำหนดเองซึ่งทำการรับรองความถูกต้องตามโทเค็น: public class AegisAuthenticationFilter extends GenericFilterBean { ... public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { try { ... } catch(AuthenticationException authenticationException) { SecurityContextHolder.clearContext(); authenticationEntryPoint.commence(request, response, authenticationException); } } } ด้วยจุดเข้าที่กำหนดเองนี้: @Component("restAuthenticationEntryPoint") public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint{ …

7
ฉันจะใช้ Spring Security โดยไม่มีเซสชันได้อย่างไร
ฉันกำลังสร้างเว็บแอปพลิเคชันที่มี Spring Security ซึ่งจะใช้งานได้บน Amazon EC2 และใช้ Elastic Load Balancers ของ Amazon น่าเสียดายที่ ELB ไม่รองรับเซสชันที่ติดหนึบดังนั้นฉันต้องตรวจสอบให้แน่ใจว่าแอปพลิเคชันของฉันทำงานได้อย่างถูกต้องโดยไม่มีเซสชัน จนถึงตอนนี้ฉันได้ตั้งค่า RememberMeServices เพื่อกำหนดโทเค็นผ่านคุกกี้และมันก็ใช้ได้ดี แต่ฉันต้องการให้คุกกี้หมดอายุพร้อมกับเซสชันเบราว์เซอร์ (เช่นเมื่อเบราว์เซอร์ปิด) ฉันต้องจินตนาการว่าฉันไม่ใช่คนแรกที่ต้องการใช้ Spring Security โดยไม่มีเซสชัน ... มีข้อเสนอแนะหรือไม่?

6
ฉันจะเปิดใช้งานการบันทึกสำหรับ Spring Security ได้อย่างไร
ฉันกำลังตั้งค่า Spring Security เพื่อจัดการกับผู้ใช้ที่เข้าสู่ระบบฉันได้เข้าสู่ระบบในฐานะผู้ใช้และถูกนำไปที่หน้าข้อผิดพลาด Access Denied เมื่อเข้าสู่ระบบสำเร็จ ฉันไม่รู้ว่าผู้ใช้ของฉันได้รับมอบหมายบทบาทอะไรหรือกฎที่ทำให้การเข้าถึงถูกปฏิเสธเพราะฉันไม่สามารถหาวิธีเปิดใช้งานการดีบักสำหรับไลบรารี Spring Security ได้ xml ความปลอดภัยของฉัน: <?xml version="1.0" encoding="UTF-8"?> <beans ... > <!-- security --> <security:debug/><!-- doesn't seem to be working --> <security:http auto-config="true"> <security:intercept-url pattern="/Admin**" access="hasRole('PROGRAMMER') or hasRole('ADMIN')"/> <security:form-login login-page="/Load.do" default-target-url="/Admin.do?m=loadAdminMain" authentication-failure-url="/Load.do?error=true" username-parameter="j_username" password-parameter="j_password" login-processing-url="/j_spring_security_check"/> <security:csrf/><!-- enable Cross Site Request Forgery protection …

19
Spring boot Security ปิดใช้งานความปลอดภัย
เมื่อฉันใช้security.basic.enabled = falseเพื่อปิดใช้งานการรักษาความปลอดภัยบนโปรเจ็กต์ Spring Boot ที่มีการอ้างอิงต่อไปนี้: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> ฉันเห็นข้อยกเว้นต่อไปนี้: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.ManagementSecurityAutoConfiguration$ManagementWebSecurityConfigurerAdapter': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could …

3
วิธีสร้างเมธอดแบบกำหนดเองสำหรับใช้ในคำอธิบายประกอบภาษานิพจน์การรักษาความปลอดภัย spring
ฉันต้องการสร้างคลาสที่เพิ่มวิธีการที่กำหนดเองสำหรับใช้ในภาษานิพจน์การรักษาความปลอดภัยในฤดูใบไม้ผลิสำหรับการอนุญาตตามวิธีการผ่านคำอธิบายประกอบ ตัวอย่างเช่นฉันต้องการสร้างวิธีการที่กำหนดเองเช่น 'customMethodReturningBoolean' เพื่อใช้ในลักษณะนี้: @PreAuthorize("customMethodReturningBoolean()") public void myMethodToSecure() { // whatever } คำถามของฉันคือสิ่งนี้ ถ้าเป็นไปได้คลาสใดที่ฉันควรจะสร้างเมธอดแบบกำหนดเองของฉันฉันจะไปกำหนดค่าในไฟล์คอนฟิกูเรชัน spring xml ได้อย่างไรและมีใครบางคนให้ตัวอย่างวิธีการกำหนดเองที่ใช้ในลักษณะนี้

11
พบโทเค็น CSRF 'null' ที่ไม่ถูกต้องในพารามิเตอร์คำขอ '_csrf' หรือส่วนหัว 'X-CSRF-TOKEN'
หลังจากกำหนดค่า Spring Security 3.2 แล้ว_csrf.tokenจะไม่ถูกผูกไว้กับคำขอหรือวัตถุเซสชัน นี่คือการกำหนดค่าความปลอดภัยสปริง: <http pattern="/login.jsp" security="none"/> <http> <intercept-url pattern="/**" access="ROLE_USER"/> <form-login login-page="/login.jsp" authentication-failure-url="/login.jsp?error=1" default-target-url="/index.jsp"/> <logout/> <csrf /> </http> <authentication-manager> <authentication-provider> <user-service> <user name="test" password="test" authorities="ROLE_USER/> </user-service> </authentication-provider> </authentication-manager> ไฟล์ login.jsp <form name="f" action="${contextPath}/j_spring_security_check" method="post" > <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /> <button id="ingresarButton" name="submit" type="submit" class="right" style="margin-right: 10px;">Ingresar</button> …

6
วิธีปิดใช้งานส่วนหัวการตอบสนอง 'X-Frame-Options' ใน Spring Security
ฉันมี CKeditor ใน jsp และเมื่อใดก็ตามที่ฉันอัปโหลดบางสิ่งข้อผิดพลาดต่อไปนี้จะปรากฏขึ้น: Refused to display 'http://localhost:8080/xxx/xxx/upload-image?CKEditor=text&CKEditorFuncNum=1&langCode=ru' in a frame because it set 'X-Frame-Options' to 'DENY'. ฉันได้ลองลบ Spring Security แล้วและทุกอย่างก็เหมือนมีเสน่ห์ ฉันจะปิดใช้งานสิ่งนี้ในไฟล์ xml ความปลอดภัยในฤดูใบไม้ผลิได้อย่างไร ฉันควรเขียนอะไรระหว่าง<http>แท็ก

7
Spring 5.0.3 RequestRejectedException: คำร้องขอถูกปฏิเสธเนื่องจาก URL ไม่ได้ถูกทำให้เป็นมาตรฐาน
ไม่แน่ใจว่านี่เป็นข้อบกพร่องของ Spring 5.0.3 หรือฟีเจอร์ใหม่ที่จะแก้ไขปัญหาในตอนท้ายของฉัน หลังจากการอัปเกรดฉันได้รับข้อผิดพลาดนี้ ข้อผิดพลาดนี้มีเฉพาะในเครื่องของฉันเท่านั้น รหัสเดียวกันในสภาพแวดล้อมการทดสอบกับโปรโตคอล HTTPS ทำงานได้ดี กำลังดำเนินการต่อ ... เหตุผลที่ผมได้รับข้อผิดพลาดนี้เป็นเพราะ URL ของฉันสำหรับการโหลดหน้า JSP /location/thisPage.jspผลลัพธ์คือ รหัสการประเมินให้ฉันผลrequest.getRequestURI() /WEB-INF/somelocation//location/thisPage.jspหากฉันแก้ไข URL ของหน้า JSP เป็นlocation/thisPage.jspสิ่งนี้สิ่งต่างๆก็ใช้ได้ดี ดังนั้นคำถามของฉันคือฉันควรลบออก/จากJSPเส้นทางในรหัสเพราะนั่นคือสิ่งที่จำเป็นต่อไป หรือSpringได้แนะนำข้อผิดพลาดเป็นความแตกต่างระหว่างเครื่องและสภาพแวดล้อมในการทดสอบของฉันเป็นโปรโตคอลเมื่อเทียบกับHTTPHTTPS org.springframework.security.web.firewall.RequestRejectedException: The request was rejected because the URL was not normalized. at org.springframework.security.web.firewall.StrictHttpFirewall.getFirewalledRequest(StrictHttpFirewall.java:123) at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:194) at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:186) at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)

8
ฉันจะรับ Session Object ใน Spring ได้อย่างไร
ผมค่อนข้างใหม่ในฤดูใบไม้ผลิและฤดูใบไม้ผลิการรักษาความปลอดภัย ฉันพยายามเขียนโปรแกรมที่ฉันต้องการรับรองความถูกต้องของผู้ใช้ที่ส่วนท้ายของเซิร์ฟเวอร์โดยใช้ Spring security ฉันคิดสิ่งต่อไปนี้: public class CustomAuthenticationProvider extends AbstractUserDetailsAuthenticationProvider{ @Override protected void additionalAuthenticationChecks(UserDetails userDetails, UsernamePasswordAuthenticationToken usernamePasswordAuthenticationToken) throws AuthenticationException { System.out.println("Method invoked : additionalAuthenticationChecks isAuthenticated ? :"+usernamePasswordAuthenticationToken.isAuthenticated()); } @Override protected UserDetails retrieveUser(String username,UsernamePasswordAuthenticationToken authentication) throws AuthenticationException { System.out.println("Method invoked : retrieveUser"); //so far so good, i can authenticate user here, …

7
วิธีปิดการใช้งาน Spring Security สำหรับ URL เฉพาะ
ฉันใช้ระบบรักษาความปลอดภัยสปริงแบบไม่ระบุสถานะ แต่ในกรณีของการสมัครใช้งานฉันต้องการปิดใช้งานการรักษาความปลอดภัยสปริงฉันปิดการใช้งานโดยใช้ antMatchers("/api/v1/signup").permitAll(). แต่ใช้งานไม่ได้ฉันได้รับข้อผิดพลาดด้านล่าง: message=An Authentication object was not found in the SecurityContext, type=org.springframework.security.authentication.AuthenticationCredentialsNotFoundException ฉันคิดว่านี่หมายความว่าตัวกรองความปลอดภัยของสปริงกำลังทำงาน ลำดับ URL ของฉันจะเป็น "/ api / v1" เสมอ การกำหนดค่าสปริงของฉันคือ @Override protected void configure(HttpSecurity http) throws Exception { http. csrf().disable(). sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS). and(). authorizeRequests(). antMatchers("/api/v1/signup").permitAll(). anyRequest().authenticated(). and(). anonymous().disable(); http.addFilterBefore(new AuthenticationFilter(authenticationManager()), BasicAuthenticationFilter.class); } ตัวกรองการพิสูจน์ตัวตนของฉันคือ @Override public void doFilter(ServletRequest …

4
Spring Security 5 การแทนที่สำหรับ OAuth2RestTemplate
ในspring-security-oauth2:2.4.0.RELEASEชั้นเรียนเช่นOAuth2RestTemplate, OAuth2ProtectedResourceDetailsและClientCredentialsAccessTokenProviderทั้งหมดได้รับการทำเครื่องหมายว่าเลิก จาก javadoc ในคลาสเหล่านี้ชี้ไปที่คู่มือการโยกย้ายความปลอดภัยฤดูใบไม้ผลิที่บอกว่าคนควรโยกย้ายไปยังโครงการหลักความปลอดภัยสปริง 5 อย่างไรก็ตามฉันมีปัญหาในการค้นหาว่าฉันจะใช้กรณีการใช้งานของฉันในโครงการนี้อย่างไร เอกสารและตัวอย่างทั้งหมดพูดคุยเกี่ยวกับการรวมเข้ากับผู้ให้บริการ OAuth ส่วนที่ 3 หากคุณต้องการให้มีการตรวจสอบคำขอขาเข้าของแอปพลิเคชันของคุณและคุณต้องการใช้ผู้ให้บริการ OAuth บุคคลที่สามเพื่อยืนยันตัวตน ในกรณีที่ใช้งานทั้งหมดที่ฉันต้องการจะทำคือการร้องขอกับRestTemplateบริการภายนอกที่ได้รับการคุ้มครองโดย OAuth ขณะนี้ฉันสร้างด้วยรหัสลูกค้าและความลับของฉันซึ่งฉันผ่านเข้าไปในOAuth2ProtectedResourceDetails OAuth2RestTemplateฉันยังมีการClientCredentialsAccessTokenProviderเพิ่มแบบกำหนดเองลงในOAuth2ResTemplateที่เพิ่งเพิ่มส่วนหัวพิเศษบางอย่างลงในคำขอโทเค็นที่ต้องการโดยผู้ให้บริการ OAuth ที่ฉันใช้ ในเอกสารประกอบ Spring-security 5 ฉันได้พบส่วนที่ระบุการปรับแต่งคำขอโทเค็นแต่อีกครั้งที่ดูเหมือนจะอยู่ในบริบทของการตรวจสอบคำขอที่เข้ามากับผู้ให้บริการ OAuth บุคคลที่สาม ยังไม่ชัดเจนว่าคุณจะใช้สิ่งนี้ร่วมกับบางสิ่งเช่น a อย่างไรClientHttpRequestInterceptorเพื่อให้แน่ใจว่าแต่ละคำขอที่ส่งออกไปยังบริการภายนอกจะได้รับโทเค็นก่อนแล้วจึงได้รับสิ่งนั้นเพิ่มเข้ากับคำขอ นอกจากนี้ในคู่มือการโยกย้ายที่ลิงก์ด้านบนมีการอ้างอิงถึงสิ่งOAuth2AuthorizedClientServiceที่กล่าวว่ามีประโยชน์สำหรับการใช้ในเครื่องดักฟัง แต่อีกครั้งดูเหมือนว่าจะต้องอาศัยสิ่งต่าง ๆ เช่นClientRegistrationRepositoryที่ดูเหมือนจะเป็นที่ที่มันยังคงลงทะเบียนสำหรับผู้ให้บริการบุคคลที่สาม ที่จัดทำขึ้นเพื่อให้แน่ใจว่าคำขอที่เข้ามานั้นได้รับการรับรองความถูกต้อง มีวิธีใดบ้างที่ฉันสามารถใช้ประโยชน์จากฟังก์ชั่นใหม่ใน spring-security 5 สำหรับการลงทะเบียนผู้ให้บริการ OAuth เพื่อรับโทเค็นเพื่อเพิ่มไปยังคำขอขาออกจากแอปพลิเคชันของฉัน

1
การแทนที่ AuthorizationServer ที่เลิกใช้แล้วใน Spring Security คืออะไร
Spring Security 5.2.2 ได้รวมโครงการ Spring Security OAuth แต่ไม่ใช่ AuthorizationServer หรือ ResourceServer AuthorizationServer ใน Spring Security 5.2.2 มีอะไรทดแทน? OAuth-2.0-โยกย้าย-Guide เอกสารนี้มีคำแนะนำสำหรับการย้ายไคลเอนต์ OAuth 2.0 และเซิร์ฟเวอร์ทรัพยากรจาก Spring Security OAuth 2.x เป็น Spring Security 5.2.x เนื่องจาก Spring Security ไม่ได้ให้การสนับสนุนเซิร์ฟเวอร์การอนุญาตการโอนย้ายเซิร์ฟเวอร์ความปลอดภัย OAuth Authorization ของ Spring Security อยู่นอกขอบเขตสำหรับเอกสารนี้

1
การรับรองความถูกต้องแบบหลายปัจจัยพร้อม Spring Boot 2 และ Spring Security 5
ฉันต้องการเพิ่มตรวจสอบปัจจัยหลายพร้อมด้วยสัญญาณอ่อน TOTP แอพลิเคชันเชิงมุมและฤดูใบไม้ผลิขณะที่การรักษาทุกอย่างใกล้เคียงเป็นไปได้ที่จะเป็นค่าเริ่มต้นของฤดูใบไม้ผลิ Boot รักษาความปลอดภัยเริ่มต้น การตรวจสอบความถูกต้องของโทเค็นเกิดขึ้นภายในเครื่อง (ด้วยไลบรารี aerogear-otp-java) ไม่มีผู้ให้บริการ API บุคคลที่สาม การตั้งค่าโทเค็นสำหรับผู้ใช้ทำงานได้ แต่การตรวจสอบความถูกต้องโดยการใช้ประโยชน์จาก Spring Security Authentication Manager / Providers ไม่ได้ TL; DR วิธีการอย่างเป็นทางการในการรวม AuthenticationProvider เพิ่มเติมเข้ากับระบบกำหนดค่าเริ่มต้นของ Spring Boot Securityคืออะไร วิธีที่แนะนำในการป้องกันการโจมตีซ้ำคืออะไร? รุ่นยาว API มีจุดปลายทาง/auth/tokenที่ส่วนหน้าสามารถรับโทเค็น JWT ได้โดยระบุชื่อผู้ใช้และรหัสผ่าน การตอบสนองยังรวมถึงการตรวจสอบสถานะซึ่งสามารถทั้งรับรองความถูกต้องหรือPRE_AUTHENTICATED_MFA_REQUIRED หากผู้ใช้ต้องการ MFA โทเค็นจะถูกออกด้วยสิทธิ์ที่ได้รับเพียงครั้งเดียวPRE_AUTHENTICATED_MFA_REQUIREDและเวลาหมดอายุ 5 นาที สิ่งนี้ช่วยให้ผู้ใช้สามารถเข้าถึงจุดปลาย/auth/mfa-tokenซึ่งพวกเขาสามารถให้รหัส TOTP จากแอพ Authenticator และรับโทเค็นที่ได้รับการรับรองความถูกต้องครบถ้วนเพื่อเข้าถึงเว็บไซต์ ผู้ให้บริการและโทเค็น ฉันได้สร้างประเพณีMfaAuthenticationProviderซึ่งใช้AuthenticationProvider: @Override public Authentication …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.