加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 21:05:54 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试为它创建一个API和一个网站客户端.最近我一直在阅读很多关于OAuth2作为安全机制的公司以及提供身份验证作为服务的公司,例如 auth0.com甚至Azure活动目录,我可以看到使用它们的优势 因为我以前总是让用户在同一个数据库和表中,以一对多的形式与User
我正在尝试为它创建一个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 /应用程序的服务始终是一个好主意.如果您拥有数据库中用户的配置文件,则在用户通过身份验证后,您不必依赖身份提供程序.

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

谢谢,索玛.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读