メインコンテンツへスキップ
Auth0 を AWS と統合すると、サポートされている任意の を使用して、ユーザーが AWS にログインできるようになります。 AWS で を設定するには、次の手順を実行する必要があります。
  1. AWS で外部 IDプロバイダーを作成します。
  2. Auth0 アプリケーションの SAML2 Web App アドオンを設定します。
  3. AWS の IDプロバイダー設定を完了します。
  4. AWS IAM ロールを作成します。
  5. AWS ロールをユーザーにマッピングします。

AWS で外部 IDプロバイダーを作成する

  1. AWS の Connect to your External Identity Provider ガイドに従って、1 点だけ変更して AWS で外部 IDプロバイダーを設定します。
    1. AWS のメタデータファイルをダウンロードする代わりに、Show Individual Metadata Values をクリックします。
    2. AWS SSO issuer URLAWS SSO ACS URL の値をコピーします。これらは次のセクションで使用します。
  2. 後続のセクションで設定を完了する必要があるため、このページはブラウザーで開いたままにしておいてください。

Auth0 の SAML SSO を設定する

を使用して、アプリケーションの SAML2 Web App アドオンを設定します。設定方法については、Amazon Web Services 向けに Auth0 を IDプロバイダーとして設定するを参照してください。

AWS IDプロバイダーの設定を完了する

  1. ブラウザーで開いている AWS SSO の IDプロバイダーページに戻ります。
  2. 前のセクションでダウンロードして保存したメタデータファイルをアップロードします。
  3. ID ソースを変更する内容を確認し、Confirm をクリックします。

AWS IAM ロールを作成する

このプロバイダーを使用するには、ロールの信頼ポリシーでこのプロバイダーを使用する IAM ロールを作成する必要があります。
  1. サイドバーで Access ManagementRoles に移動するか、Roles を開きます。Create Role をクリックします。
  2. 次のページで、信頼するエンティティの種類を選択するよう求められます。SAML 2.0 Federation を選択します。
  3. 求められたら、先ほど作成したプロバイダーを SAML provider として設定します。Allow programmatic and AWS Management Console access を選択します。続行するには Next をクリックします。
  4. Attach Permission Policies ページで、ロールにアタッチする適切なポリシーを選択します。これにより、このロールを付与されたユーザーが AWS で持つ権限が決まります。たとえば、ユーザーに IAM への読み取り専用アクセスを付与するには、IAMReadOnlyAccess ポリシーを検索して選択します。完了したら、Next Step をクリックします。
  5. 3 番目の Create Role 画面は Add Tags です。多数のロールを作成する場合は、タグを使って作成したロールを整理できます。
  6. Review ページで Role Name を設定し、設定内容を確認します。次のパラメーターに値を指定します。
    FieldDescription
    Role nameロールのわかりやすい名前。
    Role descriptionロールの用途の説明。
  7. Trusted entitiesPolicies の内容を確認し、Create Role をクリックします。

AWS ロールをユーザーにマッピングする

高度なユースケースでロールを割り当てるサーバーサイドのルールを定義する例については、Amazon API Gateway チュートリアルを参照してください。
指定した AWS ロール は、AWS マネジメントコンソールを含むリソースに対して許可されるアクセスの種類を制御する IAM ポリシー に関連付けられます。ロールとポリシーの詳細については、IAM ロールの作成を参照してください。
  1. AWS ロールをユーザーにマッピングするには、Rule を作成します。
    function (user, context, callback) {
    
      user.awsRole = 'arn:aws:iam::951887872838:role/TestSAML,arn:aws:iam::951887872838:saml-provider/MyAuth0';
      user.awsRoleSession = user.name;
    
      context.samlConfiguration.mappings = {
        'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
        'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession'
      };
    
      callback(null, user, context);
    
    }
    
    上記のコードスニペットでは、user.awsRole は AWS ロールと IdP を識別します。AWS ロール識別子はカンマの前にあり、IdP 識別子はカンマの後にあります。
    1. ルールでは、これら 2 つの値を複数の方法で取得できます。これらの値は、左側のサイドバーで前の手順で AWS に作成した項目を選択すると、IAM Console から取得できます。作成した IDプロバイダーとロールの両方には、Console で選択するとコピーできる ARN があります。
    2. 上記の例では、これらの値はどちらもルールにハードコードされています。別の方法として、これらの値をユーザープロファイルに保存したり、他の属性から導出したりすることもできます。たとえば、Active Directory を使用している場合は、group などのユーザーに関連付けられたプロパティを適切な AWS ロールにマッピングできます。
      var awsRoles = {
        'DomainUser': 'arn:aws:iam::951887872838:role/TestSAML,arn:aws:iam::95123456838:saml-provider/MyAuth0',
        'DomainAdmins': 'arn:aws:iam::957483571234:role/SysAdmins,arn:aws:iam::95123456838:saml-provider/MyAuth0'
      };
      user.awsRole = awsRoles[user.group];
      user.awsRoleSession = user.email;
      
      context.samlConfiguration.mappings = {
        'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
        'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession',
      };
      

複数のロールをマッピングする

ロールマッピングには配列を割り当てることもできます (つまり、awsRoles: role1 ではなく awsRoles = [ role1, role2 ] となります) たとえば、次のような構造の Active Directory グループがあるとします。
var user = {
  app_metadata: {
    ad_groups: {
      "admins": "some info not aws related",
      "aws_dev_Admin": "arn:aws:iam::123456789111:role/Admin,arn:aws:iam::123456789111:saml-provider / Auth0",
      "aws_prod_ReadOnly": "arn:aws:iam::123456789999:role/ReadOnly,arn:aws:iam::123456789999:saml-provider / Auth0"
    }
  }
};
ルールは、たとえば次のようになります。
function (user, context, callback) {

  var userGroups = user.app_metadata.ad_groups;

  function awsFilter(group) {
    return group.startsWith('aws_');
  }

  function mapGroupToRole(awsGroup) {
    return userGroups[awsGroup];
  }

  user.awsRole = Object.keys(userGroups).filter(awsFilter).map(mapGroupToRole);
  user.awsRoleSession = 'myawsuser'; // ユーザーごとに一意 http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html

  context.samlConfiguration.mappings = {
    'https://aws.amazon.com/SAML/Attributes/Role': 'awsRole',
    'https://aws.amazon.com/SAML/Attributes/RoleSessionName': 'awsRoleSession'
  };

  callback(null, user, context);

}

セッションの有効期限を設定する

AWS セッションの有効期限 (3600 秒) を延長するには、カスタムの Rule を使用します。このルールでは、セッションの継続時間を変更する SessionDuration 属性 を設定します。

設定をテストする

  1. Dashboard > Applications > Applications に移動し、アプリケーション名をクリックします。
  2. Addons タブで、SAML2 Web App アドオンを選択します。
  3. Usage タブで、Identity Provider Login URL を確認します。Auth0 アカウントのログインページにリダイレクトされます。正常にログインすると、AWS にリダイレクトされます。

詳しくはこちら