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

前端之家收集整理的这篇文章主要介绍了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表中添加一个新的属性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中的配置文件对象来保护此API端点.
2.您可以在Auth0中创建一个自定义规则,将用户信息发布回您的API.此规则在Auth0服务器上执行,因此这是一个安全的调用.
3.身份提供者(在我们的例子中为Auth0)需要公开API端点,该端点为我们提供用户配置文件数据(例如: https://yourdoamin.auth0.com/userinfo).您可以从API调用此端点以接收用户信息.

用户注册到您的应用程序时,请使用这些技术之一在数据库中建立用户配置文件信息表.将身份提供程序视为负责验证资源所有者(应用程序的用户)并提供访问令牌以安全访问API /应用程序的服务始终是一个好主意.如果您拥有数据库用户配置文件,则在用户通过身份验证后,您不必依赖身份提供程序.

如果您有任何其他问题,请与我们联系.

谢谢,索玛.

猜你在找的asp.Net相关文章