Single sign on AWS使用托管Cognito UI放大联邦Okta身份验证

Single sign on AWS使用托管Cognito UI放大联邦Okta身份验证,single-sign-on,amazon-cognito,saml,aws-amplify,okta,Single Sign On,Amazon Cognito,Saml,Aws Amplify,Okta,我正在尝试更新现有的React Amplify应用程序,该应用程序使用AWS Cognito用户池进行身份验证,也使用通过SAML集成的Okta SSO进行身份验证。Cognito是根据配置的,我非常确定所有配置都是正确的,因为当我从Cognito控制台使用“Launch Hosted UI”按钮时,我看到了带有Okta和Cognito用户名/密码面板的正确登录对话框,并且可以使用其中任何一个进行身份验证 但是,我无法在React中使用Authenticator组件调用时显示相同的面板,我认为这

我正在尝试更新现有的React Amplify应用程序,该应用程序使用AWS Cognito用户池进行身份验证,也使用通过SAML集成的Okta SSO进行身份验证。Cognito是根据配置的,我非常确定所有配置都是正确的,因为当我从Cognito控制台使用“Launch Hosted UI”按钮时,我看到了带有Okta和Cognito用户名/密码面板的正确登录对话框,并且可以使用其中任何一个进行身份验证

但是,我无法在React中使用
Authenticator
组件调用时显示相同的面板,我认为这是因为我没有正确设置
federated
参数,但我能找到的唯一文档是用于配置Google、Facebook或Auth0,而不是Okta

我得到的错误是:

未处理的拒绝(TypeError):无法读取未定义的属性“oauthSignIn”

代码设置如下(但我尝试了许多排列,但运气不佳):

const federatedInfo={
oauth_配置:{
域名:“xxx.auth.us-east-1.amazonconito.com”,
clientID:'zzz',
重定向URI:'http://localhost:3000/',
观众:“urn:amazon:cognito:sp:us east yyy”,
responseType:'token',//'token id\u token',//目前我们只支持隐式授权流
作用域:“openid电子邮件”,
返回到:'http://localhost:3000/'
}
};
{
setAuthData({authState:state,user:data});
}}
子项={[,,]}
/>;

关于如何使其工作的任何提示?

我不完全理解您的意思,因为我不使用Amplify,但值得检查您是否知道可以使用授权端点

i、 e.您可以使用此格式创建静态链接


https://[your cognito auth domain]/oauth2/authorize?redirect_uri=[your callback url]&response_type=token&client_id=[your client id]&identity_provider=[your identity provider]

我没有完全理解您的意思,因为我没有使用Amplify,但值得检查一下您是否知道可以使用authorize端点

i、 e.您可以使用此格式创建静态链接


https://[your cognito auth domain]/oauth2/authorize?redirect_uri=[your callback url]&response_type=token&client_id=[your client id]&identity_provider=[your identity provider]

我们通过直接调用
auth.federatedSignIn()
来绕过这个问题,条件是auth配置中存在
誓言.domain
,并且仅对本地Cognito用户名/密码登录使用
验证器
组件


不是很优雅,但至少它起作用了。亚马逊对这整个领域的记录都少得可怜。

我们通过直接调用
Auth.federatedSignIn()
来绕过这一问题,条件是Auth配置中存在
ware.domain
,并且只使用
Authenticator
组件进行本地Cognito用户名/密码登录


不是很优雅,但至少它起作用了。令人遗憾的是,亚马逊对这整个地区的记录不足。

谢谢你的提示。这基本上就是我在问题中提到的“启动托管UI”按钮创建的URL。这很好,但由于基于应用的
身份验证程序
组件配置不正确,它会强制用户通过第二个非联邦身份验证流。我想我可能已经弄明白了,在更多的测试之后,我会发布一个答案。谢谢你的提示。这基本上就是我在问题中提到的“启动托管UI”按钮创建的URL。这很好,但由于基于应用的
身份验证程序
组件配置不正确,它会强制用户通过第二个非联邦身份验证流。我想我可能已经弄明白了,在更多的测试之后,我会发布一个答案。你能详细介绍一下吗?我的处境也一样。你如何处理重定向?你能详细介绍一下吗?我的处境也一样。如何处理重定向?
const federatedInfo = {
    oauth_config: {
        domain: 'xxx.auth.us-east-1.amazoncognito.com',
        clientID: 'zzz',
        redirectUri: 'http://localhost:3000/',
        audience: 'urn:amazon:cognito:sp:us-east-yyy',
        responseType: 'token', //'token id_token', // for now we only support implicit grant flow
        scope: 'openid email',
        returnTo: 'http://localhost:3000/'
    }
};


   <Authenticator
        {...props}
        theme={AmplifyTheme}
        federated={federatedInfo}
        hideDefault={true}
        signUpConfig={authConfig.signUpConfig}
        onStateChange={(state, data) => {
            setAuthData({authState: state, user: data});
        }}
        children={[<Greetings/>, <SignIn federated={federatedInfo}/>, <ConfirmSignIn/>, <VerifyContact/>, <ForgotPassword/>, <RequireNewPassword/>]}
    />;