我正在使用 Amplify iOS SDK 构建一个通过 AWS Cognito 进行身份验证的 iOS 应用程序。
我浏览了本教程(https://docs.amplify.aws/lib/auth/signin/q/platform/ios/),如果用户直接通过 Cognito 注册并登录,它工作正常。当用户注册时,用户名和密码存储在 Cognito 的用户池中,稍后他们可以使用该凭据登录。
问题是我的公司使用第三方身份提供者 - 带有 SAML 的 Oracle Access Manager (OAM)。用户通过 OAM 注册。目前我的应用程序不知道如何与 OAM 交谈。流程应该是用户输入用户名和密码 -> Cognito 将他们发送到 OAM 进行身份验证 -> OAM 响应 Cognito -> Cognito 向应用程序提供访问令牌。目前我可以登录通过 Cognito 用户池注册的用户,但是对于使用 OAM 的用户,结果是错误的用户名/密码,这意味着 Cognito 使用自己的用户池而不是 OAM 来检查用户。我希望 Cognito 知道与 OAM 交谈并获得身份验证结果。这可以在 amplifyconfiguration.json 文件中完成吗?我认为配置文件中可能缺少一些身份验证信息。
这是配置文件,现在“auth”属性中基本上没有任何内容,我认为可能会写一些东西来指定 Cognito 应该寻找哪个身份提供者。
{
"UserAgent": "aws-amplify-cli/2.0",
"Version": "1.0",
"auth": {
"plugins": {
"awsCognitoAuthPlugin": {
"UserAgent": "aws-amplify/cli",
"Version": "0.1.0",
"IdentityManager": {
"Default": {}
},
"CognitoUserPool": {
"Default": {
"PoolId": "[POOL-ID]",
"AppClientId": "[APP-ID]",
"AppClientSecret": "[APP-SECRET]",
"Region": "us-east-2"
}
},
"Auth": {
"Default": {
"authenticationFlowType": "USER_SRP_AUTH"
}
}
}
}
}
}