AWX集成Okta SAML配置失败,400 Bad Request错误求助
大家好,我这段时间一直在尝试给AWX配置Okta SAML,但始终没成功,用户登录时会遇到400: Bad Request Error Code: GENERAL_NONSUCCESS错误。以下是我当前的AWX SAML配置和Okta端的设置情况,想请教各位有没有解决思路?
当前AWX的SAML配置:
SAML_AUTO_CREATE_OBJECTS: false SOCIAL_AUTH_SAML_SP_ENTITY_ID: 'AWXURL' SOCIAL_AUTH_SAML_SP_PUBLIC_CERT: "{{ lookup('ansible.builtin.file', './cert.pem') }}" SOCIAL_AUTH_SAML_SP_PRIVATE_KEY: "{{ lookup('ansible.builtin.file', './key.pem') }}" SOCIAL_AUTH_SAML_ORG_INFO: { "en-US": { "name": "OKTA", "url": "AWXURL", "displayname": "OKTA" } } SOCIAL_AUTH_SAML_TECHNICAL_CONTACT: { "emailAddress": "foo@bar.com", "givenName": "FOO" } SOCIAL_AUTH_SAML_SUPPORT_CONTACT: { "emailAddress": "foo@bar.com", "givenName": "FOO" } SOCIAL_AUTH_SAML_ENABLED_IDPS: { "okta": { "attr_email": "Email", "attr_first_name": "FirstName", "attr_last_name": "LastName", "attr_user_permanent_id": "name_id", "attr_username": "UserName", "entity_id": "http://www.okta.com/ID", "url": "https://ORG.oktapreview.com/app/APP/ID/sso/saml", "x509cert": "MIIIIIIIIIIIIII" } } SOCIAL_AUTH_SAML_SECURITY_CONFIG: requestedAuthnContext: false SOCIAL_AUTH_SAML_SP_EXTRA: SOCIAL_AUTH_SAML_EXTRA_DATA: SOCIAL_AUTH_SAML_ORGANIZATION_MAP: { "FOO": { "admins": true, "users": true } } SOCIAL_AUTH_SAML_TEAM_MAP: SOCIAL_AUTH_SAML_ORGANIZATION_ATTR: {} SOCIAL_AUTH_SAML_TEAM_ATTR: {} SOCIAL_AUTH_SAML_USER_FLAGS_BY_ATTR: {}
Okta端设置:
管理员已配置了属性映射(具体映射内容暂未详细说明)
我整理了几个可能的排查点,你可以逐一试试:
检查实体ID和回调URL一致性:AWX的
SOCIAL_AUTH_SAML_SP_ENTITY_ID必须和Okta应用配置里的"Single Sign On URL"、"Audience URI (SP Entity ID)"完全匹配,注意有没有拼写错误、末尾的斜杠差异(比如AWXURL是带/还是不带),还有HTTPS/HTTP的区别——Okta那边一般要求HTTPS,你确认下AWX的URL是不是用了正确的协议?证书和密钥的有效性:确保
cert.pem和key.pem是配对的有效证书,没有过期,而且Okta那边已经正确导入了AWX的SP公证书。另外,检查证书内容有没有包含多余的换行或者字符,有时候粘贴的时候会引入格式问题。属性映射匹配度:AWX配置里的
attr_email、attr_username这些字段,必须和Okta那边实际发送的SAML断言属性名称完全一致。比如Okta里是不是把邮箱映射成了Email,用户名映射成了UserName?可以用SAML tracer这类工具抓包看看实际返回的断言里的属性名,和你配置的是不是对得上。NameID格式问题:你设置了
attr_user_permanent_id: "name_id",要确认Okta那边发送的NameID格式是AWX能识别的,比如emailAddress或者persistent格式,有没有在Okta应用的"Name ID format"里正确设置?Security配置细节:虽然你设置了
requestedAuthnContext: false,但可以检查下Okta那边的认证上下文要求,有没有和AWX的配置冲突?另外,有没有开启签名加密相关的设置,比如AWX是不是要求SAML响应签名,而Okta那边没开启?日志排查:AWX的日志里应该会有更详细的错误信息,你可以去AWX的日志目录(一般是
/var/log/tower/或者容器日志)里找相关的SAML认证日志,看看有没有具体的错误提示,比如断言验证失败、属性缺失之类的。
如果Okta的属性映射有具体内容,也可以补充出来,这样大家能更精准地帮你定位问题~
备注:内容来源于stack exchange,提问作者igor012

