azure – 当用户存储在外部身份提供程序服务中时与用户的关系
我正在尝试为它创建一个API和一个网站客户端.最近我一直在阅读很多关于OAuth2作为安全机制的公司以及提供身份验证作为服务的公司,例如 auth0.com甚至Azure活动目录,我可以看到使用它们的优势 因为我以前总是让用户在同一个数据库和表中,以一对多的形式与Users表有关系,如下所示 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类如何处理与用户的关系? 在后一种情况下,类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中的配置文件对象来保护此API端点. 2.您可以在Auth0中创建一个自定义规则,将用户信息发布回您的API.此规则在Auth0服务器上执行,因此这是一个安全的调用. 3.身份提供者(在我们的例子中为Auth0)需要公开API端点,该端点为我们提供用户配置文件数据(例如: https://yourdoamin.auth0.com/userinfo).您可以从API调用此端点以接收用户信息. 当用户注册到您的应用程序时,请使用这些技术之一在数据库中建立用户配置文件信息表.将身份提供程序视为负责验证资源所有者(应用程序的用户)并提供访问令牌以安全访问API /应用程序的服务始终是一个好主意.如果您拥有数据库中用户的配置文件,则在用户通过身份验证后,您不必依赖身份提供程序. 如果您有任何其他问题,请与我们联系. 谢谢,索玛. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |