我正在尝试加载cognito的网络托管登录页面以管理我们的Web应用程序中的登录。在此,我也想让Salesforce登录。为此,我使用了cognito的openID connect功能。我遵循了他们文档中提到的所有步骤。在salesforce中创建一个连接的应用,并选择openid范围,将回调URL作为我的Web应用中的页面之一,并将URL作为cognito userpool的域开始,并使用端点“ oauth2 / idpresponse”。
但是,当我从cognito的登录页面上单击salesforce登录按钮时,它给了我一个重定向不匹配错误。我注意到,当我使用Salesforce登录时,请求中的重定向uri指向Cognito,而不是我的Web应用程序。链接中的重定向uri是我的用户池的域,带有“ oauth2 / idpresponse”端点,该端点是已连接应用程序中的起始URL。有什么方法可以配置应该从cognito控制台附加到salesforce登录链接中的重定向uri?
我关注的链接: Adding OIDC Identity Providers to a User Pool
我还尝试提供重定向uri的值(这是cognito创建的登录链接中的请求参数)作为我连接的应用程序的回调URL。这解决了重定向uri不匹配的问题,并导致了另一个问题,即“错误的令牌响应”。现在我很困惑哪种方法正确以及如何解决这些问题。
请帮助。
答案 0 :(得分:1)
我在通过OKTA进行身份验证时遇到类似的问题...
使用用户池从身份提供者对用户进行身份验证时,用于身份验证的“应用程序”是用户池..而不是最终应用程序。因此,当您在身份提供者(SalesForce)中配置您的App时,redirect_uri
必须是您的用户池URI(请参考您跟随的链接:Adding OIDC Identity Providers to a User Pool)
然后,身份验证流如下所示:
请求:
User App-> AWS Cognito-> SalesForce
响应:
SalesForce-> AWS Cognito->用户应用程序
您可能正在从SalesForce重定向到您的用户应用程序,这给了您这种重定向不匹配的情况。
对于我来说,我无法将用户池配置为OKTA中的应用程序(因为我希望用户从OKTA而非应用程序启动登录)。我采用的方法是将OKTA用作OpenID联合身份。当然,我没有获得用户池(登录页面)的好处,但是出于我的目的,这不是必需的。
答案 1 :(得分:1)
我遇到了这个确切的问题,那就是我的回调URL需要设置为https://[cognito-domain-name].auth.[region].amazoncognito.com/oauth2/idpresponse
这使我发疯,因为AWS和Salesforce文档没有向我充分解释这一点。
我发现的最有用的文章是这篇文章(来源:Brian Pfeil GitHub:pfeilbr):https://github.com/pfeilbr/aws-cognito-playground#salesforce-as-identity-provider-sign-into-app-with-salesforce-credentials
我自己在设置过程中遇到了麻烦,但是请随时对我可能会澄清的任何问题发表评论。
答案 2 :(得分:0)
我遇到的一个问题是回调 URL 是 Cognito 托管的 UI 按钮 URL 中的编码格式,并且 salesforce 不接受编码的 URL。所以当两个 URL 都匹配时,它会给出一个无效的 URI 错误