首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何为CognitoIdentityProviderClient的addCustomAttributes设置帐户ID或配置文件/角色?

CognitoIdentityProviderClient 是 AWS Cognito 的一个客户端,用于与 Cognito 用户池进行交互。addCustomAttributes 方法用于向用户池添加自定义属性。然而,直接在 addCustomAttributes 方法中设置账户ID或配置文件/角色是不支持的。相反,您可以在用户注册或更新用户属性时设置这些值。

以下是如何在用户注册时设置账户ID和配置文件/角色的示例:

  1. 创建自定义属性

首先,在 Cognito 控制台中为您的用户池创建自定义属性。例如,您可以创建一个名为 custom:accountId 的属性来存储账户ID,以及一个名为 custom:profileRole 的属性来存储配置文件/角色。

  1. 在用户注册时设置自定义属性

当用户注册时,您可以使用 AdminCreateUserSignUp API 来设置自定义属性。以下是使用 AdminCreateUser API 的示例:

代码语言:txt
复制
const { CognitoIdentityProviderClient, AdminCreateUserCommand } = require("@aws-sdk/client-cognito-identity-provider");

const cognitoIdentityProviderClient = new CognitoIdentityProviderClient({ region: "your-region" });

const params = {
  UserPoolId: "your-user-pool-id",
  Username: "user@example.com",
  UserAttributes: [
    {
      Name: "email",
      Value: "user@example.com",
    },
    {
      Name: "name",
      Value: "John Doe",
    },
    {
      Name: "custom:accountId",
      Value: "1234567890",
    },
    {
      Name: "custom:profileRole",
      Value: "admin",
    },
  ],
};

const command = new AdminCreateUserCommand(params);
cognitoIdentityProviderClient.send(command).then((data) => {
  console.log(data);
}).catch((error) => {
  console.error(error);
});

请确保将 "your-region""your-user-pool-id" 替换为您的实际值。

  1. 更新现有用户的自定义属性

如果您需要更新现有用户的自定义属性,可以使用 AdminUpdateUserAttributes API。以下是一个示例:

代码语言:txt
复制
const { CognitoIdentityProviderClient, AdminUpdateUserAttributesCommand } = require("@aws-sdk/client-cognito-identity-provider");

const cognitoIdentityProviderClient = new CognitoIdentityProviderClient({ region: "your-region" });

const params = {
  UserPoolId: "your-user-pool-id",
  Username: "user@example.com",
  UserAttributes: [
    {
      Name: "custom:accountId",
      Value: "0987654321",
    },
    {
      Name: "custom:profileRole",
      Value: "user",
    },
  ],
};

const command = new AdminUpdateUserAttributesCommand(params);
cognitoIdentityProviderClient.send(command).then((data) => {
  console.log(data);
}).catch((error) => {
  console.error(error);
});

同样,请确保将 "your-region""your-user-pool-id" 替换为您的实际值。

参考链接:

请注意,这些示例使用了 AWS SDK for JavaScript。如果您使用的是其他编程语言,请查阅相应的 AWS SDK 文档以获取相应的 API 和示例代码。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 超详细!一步一步教会你如何使用Java构建单点登录

    在开发应用程序时,通常只有一台资源服务器为多个客户端应用程序提供数据。尽管这些应用程序可能具有相似的用户,但它们可能具有执行所需的不同权限。设想一种情况,其中第一个应用程序的一部分用户应有权访问第二个应用程序(以管理控制台应用程序与客户端或用户应用程序相对应);您将如何执行此操作?在本文中,我将向您展示如何使用Okta和Spring Boot通过两个客户端应用程序和一个资源服务器来实现单点登录。我还将讨论如何使用访问策略来强制执行身份验证和授权策略,以及如何基于应用程序范围来限制对资源服务器的访问。在进入代码之前,您需要适当的用户身份验证配置。今天,您将使用Okta作为OAuth 2.0和OpenID Connect(OIDC)提供程序。这将使您能够管理用户和组,并轻松启用诸如社交和多因素日志身份验证之类的选项。首先,您需要先注册并创建一个免费的Okta开发人员帐户(如果尚未注册)。您会收到一封电子邮件,其中包含有关如何完成帐户设置的说明。完成此操作后,导航回到您的Okta帐户以设置Web应用程序,用户,资源服务器和授权服务器。首次登录时,可能需要单击黄色的管理按钮才能访问开发人员的控制台。创建两个OpenID Connect应用程序第一步是创建两个OIDC应用程序。OpenID Connect是建立在OAuth 2.0之上的身份验证协议,它是一种授权协议。每个OIDC应用程序都为每个Web应用程序实例定义一个身份验证提供程序终结点。在Okta开发人员控制台中,导航到应用程序,然后单击添加应用程序。选择Web,然后单击Next。使用以下值填充字段:

    03

    从 Azure AD 到 Active Directory(通过 Azure)——意外的攻击路径

    虽然 Azure 在某些方面利用 Azure Active Directory,但 Azure AD 角色通常不会直接影响 Azure(或 Azure RBAC)。本文详细介绍了一个已知配置(至少对于那些深入研究过 Azure AD 配置选项的人来说),Azure Active Directory 中的全局管理员(又名公司管理员)可以通过租户选项获得对 Azure 的控制权。这是“按设计”作为“打破玻璃”(紧急)选项,可用于(重新)获得 Azure 管理员权限,如果此类访问权限丢失。 在这篇文章中,我探讨了与此选项相关的危险,它当前是如何配置的(截至 2020 年 5 月)。 这里的关键要点是,如果您不仔细保护和控制全局管理员角色成员资格和关联帐户,您可能会失去对所有 Azure 订阅中托管的系统以及 Office 365 服务数据的积极控制。 注意: 围绕此问题的大部分研究是在 2019 年 8 月至 2019 年 12 月期间进行的,自那时以来,Microsoft 可能已经在功能和/或能力方面进行了更改。

    01
    领券