通过AWS Cognito实现AzureAD SAML SSO:认证方法不匹配问题
解决AWS Cognito SAML集成Azure AD的AADSTS75011错误
错误原因
AADSTS75011错误是因为Cognito发送的SAML请求中指定了特定的AuthnContextClassRef(默认通常是urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport),而用户已通过Windows集成认证(如Kerberos)登录Azure AD,双方认证方法不匹配导致冲突。
解决步骤
1. 通过AWS控制台修改Cognito SAML IdP配置
- 登录AWS管理控制台,进入目标Cognito用户池
- 切换到身份提供者标签,找到已配置的SAML IdP
- 点击编辑,滚动到高级设置区域
- 在AuthnContextClassRef字段中输入
urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified,或者清空该字段以移除AuthnContext要求 - 保存配置后重新测试登录流程
2. 使用AWS SDK for PHP修改IdP配置
如果控制台操作无法满足需求,可通过aws/aws-sdk-php调用updateIdp接口修改ProviderDetails中的AuthnContext设置:
use Aws\CognitoIdentityProvider\CognitoIdentityProviderClient; $client = new CognitoIdentityProviderClient([ 'region' => '你的AWS区域', 'version' => 'latest', 'credentials' => [ 'key' => '你的AWS Access Key', 'secret' => '你的AWS Secret Key', ] ]); // 更新SAML IdP的AuthnContext配置 $client->updateIdp([ 'UserPoolId' => '你的用户池ID', 'ProviderName' => '你的SAML身份提供者名称', 'ProviderDetails' => [ 'AuthnContextClassRefs' => ['urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified'], // 保留其他已有的ProviderDetails配置,比如MetadataURL等 ] ]);
3. 备选:Azure AD端调整(仅当Cognito修改无效时)
- 登录Azure门户,进入对应的企业应用
- 切换到单一登录标签,找到用户分配,确保报错用户已被正确分配到该应用
- 若仍有问题,可在SAML配置的高级设置中,开启“允许未请求的AuthnContext”选项
内容的提问来源于stack exchange,提问作者Metamorpher
相关产品推荐
相关产品推荐

