当您的x射线登录UI在SSO重定向期间输入凭据后在浏览器中返回错误令牌交换消息时该怎么办
相关版本此信息与…有关人工版本6.x
当您访问Xray URL时,您将被重定向到Artifactory的单点登录(SSO)登录页面。成功登录后,单点登录(SSO)重定向应该会将您带回到Xray主页。相反,你可能会看到a令牌交换错误在浏览器中。
当出现此问题时,您将在Artifactory中注意到以下错误request.log.对API端点的请求,/ api /系统/网关/ openid /令牌,将会注册HTTP 401登录失败后立即出现的日志错误:
20181219200724 | 14 | |请求10.103.146.36 | non_authenticated_user |职位| / api /系统/网关/ openid /令牌HTTP / 1.1 | 401 | 1907 |
通常,这应该导致成功登录的HTTP 200消息。
在启用调试的情况下,xray_server.log,您将看到HTTP 401未经授权的错误上面写着"日志含义无法获得sso info响应。"
xray_server.log中相关的日志信息如下:
[2018/12/19 21:21:45 utc][错误](m.si-fil.com/xray/access/access_sso。(* AccessSsoClient) .ExchangeToken: 73)无法获得sso info响应,err: statusCode: 401, models. log . log。AccessError{Code:"", Message:"Unauthorized", Detail:""}
[2018/12/19 21:21:45 utc][错误](m.si-fil.com/xray/handlers/auth.AuthHandler.SsoExchange: 343) statusCode: 401, models。AccessError{Code:"", Message:"Unauthorized", Detail:""}
时发生此问题X-Artifactory-Override-Base-Url和proxy_pass_header服务器在您的Artifactory实例前面的反向代理服务器或负载平衡器中缺少header。一般来说,当Xray或任何其他客户端通信你是你的Artifactory服务器时,Artifactory返回几个HTTP响应头与响应值一起,这包括Artifactory的基本URL和服务器头中的Artifactory服务器版本。包含Artifactory Base URL的HTTP响应头服务器可能会被Artifactory前面的反向代理服务器或负载平衡器覆盖。
当这种情况发生时,Xray期望在Artifactory基础URL中看到的客户端和在与Artifactory通信期间具有特定值的HTTP头服务器。但是,如果您的反向代理或负载均衡器覆盖了来自Artifactory的响应,其中包括Artifactory Base URL和Server报头,那么它将导致失败,因为Xray服务没有在HTTP报头中获得预期的值。
要解决这个问题,将x -Artifactory- overrides - base - URL头配置为与Artifactory实例前面的反向代理服务器配置中的Artifactory URL所使用的值相同。与此同时,设置标题proxy_pass_header其值为:服务器.请注意要使用的Artifactory URL协议应该是http如果SSL是不设置和https如果SSL已经启用.
在下面的示例中,我们假设在反向代理服务器上启用了SSL,并且Artifactory是通过https访问的(在这里您将更改$ {Artifactory_domain}变量全限定域名(FQDN)更新您的反向代理配置时的Artifactory实例):
Nginx的:
proxy_set_header x - artifactory - overrides - base - url https://${Artifactory_domain}/artifactory;
proxy_pass_header服务器;
对于负载均衡器:
如果您只在Artifactory前面使用负载平衡器,那么配置您的自定义URL库或X-Artifactory-Override-Base-Url与负载平衡器配置中的Artifactory URL使用的值相同。除了这个HTTP头,服务器,应该允许通过负载平衡器,其值应该不被它覆盖。
