Javascript 如何使用SAML将AWS Cognito连接到远程Shibboleth安装?
免责声明:我不太熟悉Shibboleth或其他认证系统或AWS Cognito的工作原理,因此对于任何能提供帮助的人,请简单解释一下 我的公司最近在AWS上运行了我们产品的云版本,我们现在想使用AWS Cognito和SAML连接到远程Shibboleth系统,以验证登录到我们云系统的用户。Shibboleth系统位于客户机构的远程位置 到目前为止,我已经做了以下工作(我不知道这些是否正确):Javascript 如何使用SAML将AWS Cognito连接到远程Shibboleth安装?,javascript,amazon-web-services,saml,amazon-cognito,shibboleth,Javascript,Amazon Web Services,Saml,Amazon Cognito,Shibboleth,免责声明:我不太熟悉Shibboleth或其他认证系统或AWS Cognito的工作原理,因此对于任何能提供帮助的人,请简单解释一下 我的公司最近在AWS上运行了我们产品的云版本,我们现在想使用AWS Cognito和SAML连接到远程Shibboleth系统,以验证登录到我们云系统的用户。Shibboleth系统位于客户机构的远程位置 到目前为止,我已经做了以下工作(我不知道这些是否正确): 在AWS中,我创建了SAML类型的IAM标识提供程序。我从客户的IT部门收到一个SAML.xml文件,
SAML.xml
文件,我将其连接到IAM身份提供商。这似乎没问题amazon cognito JS master
console.log
语句中返回了一个有效的syncClient
对象,但是从那里,我不知道该做什么AWS.CognitoSyncManager
请求之前,我是否需要拥有可用的用户凭据(即用户名和密码),或者在此之前是否需要进行某种级别的初始化?是否需要客户机构/IT部门提供其他信息/文件来完成此设置
我对此知之甚少,甚至不知道该问什么问题。如有任何帮助/指导,将不胜感激
请注意,我已经详细阅读了AWS文档,但我无法理解他们所说的内容(我不是认证专家)。多谢各位
var IdentityPoolId = 'us-east-2:45679821-9064-45f8-12ac-456132abc789'; // Not a real ID.
// Initialize the Amazon Cognito credentials provider
AWS.config.region = 'us-east-2'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: IdentityPoolId,
});
// Initialize the Cognito Sync client
AWS.config.credentials.get(function(){
var syncClient = new AWS.CognitoSyncManager();
console.log(syncClient);
syncClient.openOrCreateDataset('myDataset', function(err, dataset) {
dataset.put('myKey', 'myValue', function(err, record){
dataset.synchronize({
onSuccess: function(data, newRecords) {
// Your handler code here
}
});
});
});
});
- 基本上,此时我需要做什么才能从我们的JS脚本向远程Shibboleth系统发出请求,以验证用户身份?
嗯,你不能。当使用联邦身份时,您需要编写自己的代码来显示登录UI,或者重定向到第三方IDP(如Shibboleth)的登录页面,或者使用他们的SDK。最终,您需要编写自己的代码,而不需要任何AWS SDK来获取OpenID令牌或SAML断言。当您获得令牌或SAML断言时,在初始化CognitoIdentityCredentials时在登录映射中使用它。参见示例。有一个登录字段,您需要在其中传递从IdP接收的令牌或断言。现在,只要映射中的SAML断言有效,您就可以获得临时AWS凭据&您的AWS调用将成功。当使用联邦身份时,登录映射中的这一行是Cognito和类似Idp的Shibboleth之间的唯一交互。您不能使用用户名和密码直接从Cognito Federated Identifications调用Shibboleth以获取有效的令牌或响应 - 但如果我想构建一个需要使用Shibboleth进行身份验证的应用程序或服务,该怎么办呢。理想情况下,如果用户没有登录,我会看到一个UI,它会将我重定向到Shibboleth,在那里我可以输入用户名和密码。课后,应使用有效凭据将我重定向到我的应用程序/服务。
这也可以做到,但要使用Cognito用户池,而不是联合身份。将SAML提供程序添加到用户池(请参阅)。在此之后,将Userpool添加到您的标识池(联邦标识)。现在使用Userpool的内置UI登录并获取Id令牌(而不是SAML断言,用户-->Userpool内置UI-->Shibboleth-->用户名+密码登录-->Shibboleth向Cognito Userpool发送SAML断言-->Userpool发出令牌)。在CognitoIdentityCredentials的登录映射中使用此Id标记