gpt4 book ai didi

azure - 当用户存储在外部身份提供商服务中时与用户的关系

转载 作者:行者123 更新时间:2023-12-04 14:25:18 24 4
gpt4 key购买 nike

我正在尝试为其创建一个 API 和一个网站客户端。最近,我读了很多关于 OAuth2 作为安全机制的文章,以及提供身份验证服务的公司,例如 auth0.com甚至 Azure Active Directory,我可以看到使用它们的优势

因为我习惯于始终将用户放在同一个数据库和表中,并以一对多的形式与用户表建立关系,如下所示

public class User
{
public string subjectId { get; set; }

public virtual List<Invoice> Invoices { get; set; }
/*
More properties in here
*/
}

public class Invoice
{
public int InvoiceId { get; set; }
public string PaymentNumber { get; set; }
public DateTime Date { get; set; }
public double Amount { get; set; }
public string Description { get; set; }

public virtual User User { get; set; }
}

我的问题是。

如果用户存储在外部身份验证服务(例如 Auth0.com)中,

  • Invoice 类将如何处理与用户的关系?
  • 是否只是在发票表中添加一个新属性 subjectId,并且该属性将采用身份验证服务分配的任何 ID 的值?

在后一种情况下,Invoice 类会像下面这样吗?

public class Invoice
{
public int InvoiceId { get; set; }
public string PaymentNumber { get; set; }
public DateTime Date { get; set; }
public double Amount { get; set; }
public string Description { get; set; }

public string SubjectId{get;set;}
}

此外,如果用户存储在其他地方,如何进行查询,例如,

Select * from Users u inner join Invoices i where Users.Name='John Doe' and i.Date>Somedate.

最佳答案

由于您提到 Auth0 作为您的身份提供者,因此有多种方法可以在数据库中实现用户表。1. 使用 Auth0 验证/注册用户将发送带有配置文件对象的响应,其中包含您需要的所有基本配置文件信息。将此配置文件对象发布回您自己的 API 以将其保存到数据库。应使用您从 Auth0 收到的访问 token 以及配置文件对象来保护此 API 端点。2. 您可以在 Auth0 中创建自定义规则,将用户信息发布回您的 api。该规则在 Auth0 服务器上执行,因此这是一个安全调用。3. 身份提供者(在我们的例子中为 Auth0)需要公开一个 API 端点,为我们提供用户配置文件数据(例如: https://yourdoamin.auth0.com/userinfo )。您可以从 API 调用此端点来接收用户信息。

当用户注册到您的应用程序时,请使用其中一种技术在您的数据库中建立用户个人资料信息表。将身份提供者视为负责验证资源所有者(应用程序的用户)并提供访问 token 以安全访问您的 API/应用程序的服务始终是一个好主意。如果您的数据库中有用户的个人资料,那么一旦用户通过身份验证,您就不必依赖身份提供者。

如果您还有任何疑问,请告诉我。

谢谢你,索玛。

关于azure - 当用户存储在外部身份提供商服务中时与用户的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36904302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com