0

면책 조항 : Shibboleth 또는 기타 인증 시스템 또는 AWS Cognito가 어떻게 작동하는지 잘 모르겠습니다. 따라서 도움이 될만한 사람이라면 누구나 간단하게 설명하십시오.SAML을 사용하여 AWS Cognito를 원격 Shibboleth 설치에 어떻게 연결합니까?

저희 회사는 최근 AWS에서 실행되는 Google 제품의 클라우드 버전을 보유하고 있으며 AWS Cognito와 SAML을 사용하여 원격 Shibboleth 시스템에 연결하여 클라우드 시스템에 로그인하는 사용자를 인증합니다. Shibboleth 시스템은 고객의 기관에 원격으로 배치됩니다.

는 지금까지, 나는 다음과 같은 일을했습니다 (이 중 하나가 정확한지 모르겠다) :

  1. 는 AWS에서, 나는 형 SAML의 IAM ID 공급자를 만들었습니다. 클라이언트의 IT 부서에서 IAM ID 제공자에 연결된 SAML.xml 파일을 받았습니다. 이것은 괜찮아 보인다.
  2. IAM ID 제공자를 설정할 때 AWS는 Cognito Auth 및 Unauth 역할을 자동 생성했습니다.이 역할을 위해 기본 정책을 유지했습니다.
  3. 클라이언트 기관용으로 새 페더레이션 ID를 설정했습니다. 또한 생성 된 IAM ID 공급자를이 페더레이션 ID에 연결했습니다.
  4. AWS에서 샘플 코드 페이지로 이동하여 연결을 위해 SDK를 선택해야했습니다. AWS에서 ID 풀 ID도 얻었습니다. 자바 스크립트 SDK를 사용하기로 결정 했으므로 JS SDK와 GitHub의 권장 라이브러리 인 amazon-cognito-js-master을 다운로드했습니다.
  5. 새로운 HTML 파일에 필요한 JS 스크립트를 포함시킨 다음 유효한 코드 풀 ID가있는 JS 코드를 파일에 넣습니다.
  6. 스크립트를 실행했을 때 console.log 문에서 유효한 syncClient 개체를 얻은 것 같았지만 거기에서 무엇을 해야할지 전혀 모른다.

기본적으로 사용자를 인증하기 위해 JS 스크립트에서 원격 Shibboleth 시스템으로 요청하려면 어떻게해야합니까?

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 
     } 

     }); 

    }); 

    }); 

}); 

답변

1
  • 기본적으로, 사용자를 인증 할 수있는 원격 표어 시스템에 대한 우리의 JS 스크립트의 요청을 만들기 위해이 시점에서 무엇을해야합니까?
    글쎄, 그럴 수 없어. 페더레이션 ID를 사용할 때 로그인 UI를 표시하거나 Shibboleth와 같은 타사 IdP의 로그인 페이지로 리디렉션하거나 SDK를 사용하기 위해 자체 코드를 작성해야합니다. 궁극적으로 AWS SDK없이 OpenID 토큰을 얻거나 사용자의 경우처럼 SAML 어설 션을 사용하여 코드를 작성해야합니다.토큰 또는 SAML 어설 션을 가져 오면 CognitoIdentityCredentials를 초기화하는 동안 로그인 맵에서이를 사용하십시오. 예 : here을 참조하십시오. Logins 필드에서 IdP로부터받은 토큰 또는 어설 션을 전달해야합니다. 이제 맵의 SAML 어설 션이 유효한 동안 임시 AWS 자격증 명 &을 AWS 호출이 성공할 수 있습니다. 로그인 맵의이 한 행은 ID가 & 인 Idp가 페더레이션 ID를 사용할 때 Shibboleth와 유일한 상호 작용입니다. 유효한 토큰 또는 응답을 얻으려면 사용자 이름 & 암호로 Cognito Federated Identities에서 Shibboleth로 직접 전화를 걸 수 없습니다.

  • 그러나 Shibboleth를 사용하여 인증해야하는 앱이나 서비스를 만들고 싶다면 어떻게해야합니까? 이상적으로, 사용자가 로그인하지 않은 경우, 사용자 이름 &을 입력 할 수있는 Shibboleth로 리디렉션해야하는 UI가 표시되어야합니다. 이후 유효한 자격 증명으로 내 앱/서비스로 리디렉션되어야합니다.
    이 작업은 Cognito Userpool이 아닌 Federated Identities를 사용하여 수행 할 수도 있습니다. SAML 공급자를 Userpool에 추가하십시오 (this 참조). 그런 다음 사용자 풀을 ID 풀 (페더레이션 ID)에 추가합니다. 이제 Userpool의 기본 UI를 사용하여 로그인하고 ID 토큰을 얻습니다. SAML 어설 션, User-> Userpool 기본 제공 UI -> Shibboleth -> Username + 로그인 비밀번호 -> Shibboleth가 SAML 어설 션을 보냅니다. to Cognito userpool -> Userpool이 토큰을 발행 함). CognitoIdentityCredentials의 로그인 맵에서이 ID 토큰을 사용하십시오.

+0

agent420 귀하의 철저한 답변을 부탁드립니다. 나는 당신이 제공 한 링크를 읽었을뿐만 아니라 약 10 번 읽었지만 여전히 혼란스럽고 몇 가지 질문이 있습니다. 1) 연합 ID와 사용자 풀의 차이점은 무엇입니까? 아니면 오히려, 그들은 무엇부터 시작해야할까요? 그들 목적은 무엇입니까? 2) 클라이언트 기관의 Shibb 시스템에서 추가 정보가 필요한 것 같습니다. 특히, 사용자가 IdP 로그인 웹 페이지를 통해 로그인하고 SAML 어설 션을 다시 보내야하는 것처럼 들립니다. 그게 사실이야? 또는 ... – HartleySan

+0

Federated Identity에 링크 된 SAML XML 파일을 제공 할 때 클라이언트 기관에서 필요한 모든 것을 이미 갖고 있습니까? 3) 어리석은 질문처럼 들릴지 모르지만 토큰이 필요한 이유는 무엇입니까? 궁극적으로 사용자가 기관의 IdP 및 SSO를 통해 적절하게 인증을받은 경우 해당 사용자가 유효한 것으로 믿고 그 시점에서 우리가 실제로하고 싶은 것은 사용자의 내부 ID, 전자 메일 주소 등을 얻는 것입니다. Google 시스템에서 인증 한 다음 필요한 권한으로 로그인 할 수있게합니다. 그게 ... – HartleySan

+0

내가 이미 만들었던 Federated Identity를 계속 사용해야합니까, 아니면 대신 User Pool을 만들어야합니까? 이런 질문은 질문 1로 거슬러 올라갑니다.하지만 저는 Cognito와 함께 근본적으로 무슨 일이 일어나고 있는지, 무엇이 인증인지, 모든 시스템이 정상인지 아닌지에 대해 혼란 스럽습니다. 감사합니다. – HartleySan

관련 문제