ฉันต้องทำการตรวจสอบความถูกต้องกับ SonarQube ด้วย SAML จาก Azure AD
เราใช้ SonarQube 8.9.6 LTS กับ openjdk 11.0.14 OpenJDK Runtime Environment build 11.0.14+9 บน Ubuntu 20.04
ฉันได้ตั้งค่าพารามิเตอร์จาก Azure (ID แอปพลิเคชัน, ID ผู้ให้บริการ, การเข้าสู่ระบบ SAML, ใบรับรอง X.509, เพิ่มกลุ่มที่ถูกต้อง เป็นต้น)
ฉันได้นำเข้าใบรับรองไปยังพวงกุญแจ java ด้วย
การทดสอบการกำหนดค่าที่รันที่ฝั่ง Azure นั้นสำเร็จ แต่เมื่อฉันพยายามเข้าสู่ระบบด้วย SAML ฉันได้รับ
คุณไม่ได้รับอนุญาตให้เข้าถึงหน้านี้ โปรดติดต่อผู้ดูแลระบบ
และข้อผิดพลาดต่อไปนี้ถูกบันทึกไว้ใน web.log ของ SonarQube
2022.03.09 10:44:26 WARN web[AX9qdufcVwzEhwilAADF][o.s.s.a.AuthenticationError] ไม่สามารถเรียกข้อมูล IdentityProvider สำหรับคีย์ 'saml2'
java.lang.IllegalArgumentException: ไม่มีผู้ให้บริการข้อมูลประจำตัว saml2 หรือไม่ได้เปิดใช้งาน
ที่ org.sonar.server.authentication.IdentityProviderRepository.getEnabledByKey(IdentityProviderRepository.java:54)
ที่ org.sonar.server.authentication.AuthenticationFilter.resolveProviderOrHandleResponse(AuthenticationFilter.java:54)
ที่ org.sonar.server.authentication.OAuth2CallbackFilter.doFilter(OAuth2CallbackFilter.java:66)
ที่ org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:139)
ที่ org.sonar.server.authentication.DefaultAdminCredentialsVerifierFilter.doFilter(DefaultAdminCredentialsVerifierFilter.java:89)
ที่ org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:139)
ที่ org.sonar.server.plugins.PluginsRiskConsentFilter.doFilter (PluginsRiskConsentFilter.java:77)
ที่ org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:139)
ที่ org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:108)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.sonar.server.platform.web.UserSessionFilter.doFilter(UserSessionFilter.java:81)
ที่ org.sonar.server.platform.web.UserSessionFilter.doFilter(UserSessionFilter.java:68)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:76)
ที่ org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:48)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:58)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.sonar.server.platform.web.RequestIdFilter.doFilter(RequestIdFilter.java:66)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:62)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
ที่ org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
ที่ org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
ที่ org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:202)
ที่ org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
ที่ org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
ที่ org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:143)
ที่ ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)
ที่ org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:81)
ที่ org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
ที่ org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
ที่ org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
ที่ org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
ที่ org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
ที่ org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1651)
ที่ org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
ที่ java.base/java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1128)
ที่ java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
ที่ org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
ที่ java.base/java.lang.Thread.run(Thread.java:829)
ฉันได้ตรวจสอบการรับส่งข้อมูล SAML และนี่คือสิ่งที่แสดง:
â¬â¹<samlp:AuthnRequest
AssertionConsumerServiceURL="https://ComapnyDomain.org/oauth2/callback/saml"
ปลายทาง = "https://CompanyDomain.org/oauth2/callback/saml2"
ID="ONELOGIN_masked" IssueInstant="2022-03-09T08:45:23Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" เวอร์ชัน="2.0"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:ชื่อ:tc:SAML:2.0:protocol">
saml:Issuerhttps://CompanyDomain.org</saml:Issuer><samlp:NameIDPolicy AllowCreate="true"
Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified"/></samlp:AuthnRequest>