Swift3에서 Cognito의 인증되지 않은 사용자로 액세스하려고했습니다.

AWS 공식 Cognito 샘플 코드를 믿고 구현했지만, 훌륭하게 빠졌기 때문에 여기에 절차를 메모하려고합니다.

샘플 코드는 github에 올립니다.
htps : // 기주 b. 코 m / 미야스에 / 아 WS 코 g 토토 mp ぇ

하고 싶은 일



Swift3.0 환경에서 인증되지 않은 사용자로 등록하고 싶습니다.

환경


  • XCode 8.2.1

  • Cognito란?



    모바일이나 네이티브 앱에 대해서, 사용자의 로그인 기능을 간단하게 구현할 수 있거나, 유저에게 연결되는 데이터를 저장, 꺼낼 수가 있습니다.

    Cognito의 트위터 인증



    귀찮은 Twitter 인증을 가볍게 할 수 있을 것 같은 이미지입니다만, 정말로 귀찮은 OAuth 인증 부분은 자전으로 준비하지 않으면 안 된다고 하는 함정이 있습니다. 어디까지나 OAuth 인증으로 얻은 Token과 TokenSecret을 사용하여 CognitoID와 연결할 수 있어요! 느낌입니다.

    User Pools 및 Federated Identities





    Cognito에 액세스하면 Manage your User Pools와 Manage Federated Identities라는 버튼이 나와서 당황스럽지만 각각 이런 기능입니다.

    User Pools



    독자적인 인증 프로바이더를 만드는 기능입니다. Twitter나 Facebook으로 인증하는 경우나 원래 미인증 유저로서 사용하고 싶은 경우 만질 필요는 없습니다.

    Federated Identities(이번에는 사용하지 않음)



    User Pools로 만든 독자적인 프로바이더나 Twitter 인증을 사용해 로그인 기능을 제공합니다.

    Cognito 설정



    Federated Identities



    identity pool을 만듭니다.

    만들기





    설정




  • Identity pool name: Pool 이름입니다. 이번에는 샘플로 만들었습니다.
  • Unauthenticated identities : 인증되지 않은 사용자가 자격 증명을 사용할 수 있는지 여부를 설정합니다. 이번에는 인증되지 않은 사용자로 자격 증명을 사용하고 싶으므로 Enable access to unauthenticated identities를 체크합니다.
  • Authentication providers: 인증에 사용하는 프로바이더의 설정입니다. Twitter나 Facebook 인증등을 실시하는 경우, 여기에서 앱 설정등을 실시합니다. 이번은 프로바이더에 의한 인증을 실시하지 않기 때문에 아무것도 설정하지 않습니다.

  • 설정이 완료되면 Create Pool을 눌러 생성합니다.

    역할 설정





    위가 인증 사용자용 역할, 아래가 미승인 사용자용 역할입니다.
    이번에는 사용자 등록이 목표이므로 기본적으로 만들겠지만 뭔가 AWS 서비스를 이용하는 경우 여기에 설정하면 좋을 것 같습니다.

    앱 만들기



    SDK 도입



    SDK는 AWS 공식에도 떨어지고 있습니다만, 어쩐지 움직이지 않아 빠졌다. . .
    Cocoapod에서 도입하겠습니다. 이번은 인증 밖에 없기 때문에 AWSCognito만 지정하면 OK입니다.
    target 'AWSCognitoSample' do
      # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
      use_frameworks!
    
      # Pods for AWSCognitoSample
      pod 'AWSCognito'
    end
    

    브리지 헤더 추가



    AWS의 SDK는 여전히 Objective-C 코드이므로 (비) Swift에서 사용하기 위해 브리지 헤더를 추가해야합니다.



    새 파일 추가에서 CognitoUserpool-Bridging-Header.h라는 파일을 만들었습니다.

    CognitoUserpool-Bridging-Header.h
    #import <AWSCore/AWSCore.h>
    #import <AWSCognito/AWSCognito.h>
    

    XCode에 헤더 설정



    Build Settings의 Objective-C Bridging Header에 이전 CognitoUserpool-Bridging-Header.h의 경로를 추가합니다.



    Identity pool ID



    AWS Console에서 Identity pool ID를 가져옵니다.



    로그인 코드 작성



    AppDelegate에 로그인 코드를 기재합니다.

    AppDelegate.swift
    let credentialsProvider = AWSCognitoCredentialsProvider(regionType:.APNortheast1, identityPoolId:"ap-northeast-1:********-****-****-****-************")
    let configuration = AWSServiceConfiguration(region:.APNortheast1, credentialsProvider:credentialsProvider)
    AWSServiceManager.default().defaultServiceConfiguration = configuration
    
    let defaultServiceConfiguration = AWSServiceConfiguration(region: AWSRegionType.APNortheast1, credentialsProvider: credentialsProvider)
    
    AWSServiceManager.default().defaultServiceConfiguration = defaultServiceConfiguration
    credentialsProvider.getIdentityId()
    

    ※리전과 Identity pool ID는 자신의 환경에 맞게 다시 작성해 주세요.

    움직여 보자



    XCode에서 앱을 시작해 보면 ...



    안전한 사용자로 추가되었습니다.

    좋은 웹페이지 즐겨찾기