Tôi có nhiệm vụ triển khai xác thực cho SonarQube bằng SAML từ Azure AD
Chúng tôi đang sử dụng SonarQube 8.9.6 LTS với openjdk 11.0.14 OpenJDK Runtime Environment build 11.0.14+9 trên Ubuntu 20.04.
Tôi đã đặt các tham số từ Azure (ID ứng dụng, ID nhà cung cấp, Đăng nhập SAML, chứng chỉ X.509, các nhóm chính xác được thêm vào, v.v.)
Tôi cũng đã nhập chứng chỉ vào móc khóa java.
Kiểm tra cấu hình chạy ở phía Azure đã thành công, tuy nhiên khi tôi thử đăng nhập bằng SAML thì tôi nhận được
Bạn không được phép truy cập trang này. Vui lòng liên hệ với quản trị viên.
Và lỗi sau được ghi trong web.log của SonarQube
2022.03.09 10:44:26 WARN web[AX9qdufcVwzEhwilAADF][o.s.s.a.AuthenticationError] Không thể truy xuất IdentityProvider cho khóa 'saml2'
java.lang.IllegalArgumentException: Nhà cung cấp danh tính saml2 không tồn tại hoặc không được kích hoạt
tại org.sonar.server.authentication.IdentityProviderRepository.getEnabledByKey(IdentityProviderRepository.java:54)
tại org.sonar.server.authentication.AuthenticationFilter.resolveProviderOrHandleResponse(AuthenticationFilter.java:54)
tại org.sonar.server.authentication.OAuth2CallbackFilter.doFilter(OAuth2CallbackFilter.java:66)
tại org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:139)
tại org.sonar.server.authentication.DefaultAdminCredentialsVerifierFilter.doFilter(DefaultAdminCredentialsVerifierFilter.java:89)
tại org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:139)
tại org.sonar.server.plugins.PluginsRiskConsentFilter.doFilter(PluginsRiskConsentFilter.java:77)
tại org.sonar.server.platform.web.MasterServletFilter$GodFilterChain.doFilter(MasterServletFilter.java:139)
tại org.sonar.server.platform.web.MasterServletFilter.doFilter(MasterServletFilter.java:108)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.sonar.server.platform.web.UserSessionFilter.doFilter(UserSessionFilter.java:81)
tại org.sonar.server.platform.web.UserSessionFilter.doFilter(UserSessionFilter.java:68)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.sonar.server.platform.web.CacheControlFilter.doFilter(CacheControlFilter.java:76)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.sonar.server.platform.web.SecurityServletFilter.doHttpFilter(SecurityServletFilter.java:76)
tại org.sonar.server.platform.web.SecurityServletFilter.doFilter(SecurityServletFilter.java:48)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.sonar.server.platform.web.RedirectFilter.doFilter(RedirectFilter.java:58)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.sonar.server.platform.web.RequestIdFilter.doFilter(RequestIdFilter.java:66)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.sonar.server.platform.web.RootFilter.doFilter(RootFilter.java:62)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.apache.catalina.filters.Set CharacterEncodingFilter.doFilter(Set CharacterEncodingFilter.java:109)
tại org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:194)
tại org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:167)
tại org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
tại org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
tại org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
tại org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
tại ch.qos.logback.access.tomcat.LogbackValve.invoke(LogbackValve.java:256)
tại org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
tại org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
tại org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
tại org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:624)
tại org.apache.coyote.AbstractProcessorLight. process(AbstractProcessorLight.java:65)
tại org.apache.coyote.AbstractProtocol$ConnectionHandler. process(AbstractProtocol.java:831)
tại org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1651)
tại org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
tại java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
tại java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
tại org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
tại java.base/java.lang.Thread.run(Thread.java:829)
Tôi đã kiểm tra lưu lượng SAML và đây là những gì nó hiển thị:
â¬â¹<samlp:AuthnRequest
AssertionConsumerServiceURL="https://ComapnyDomain.org/oauth2/callback/saml"
Đích="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" Version="2.0"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
xmlns:samlp="urn:oasis:names: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>