Estoy intentando crear una API y un cliente de sitio web para ello. Últimamente, he estado leyendo mucho sobre OAuth2 como un mecanismo de seguridad y compañías que ofrecen autenticación como un servicio como auth0.com o incluso Azure active Directory y puedo ver las ventajas de usarlos
Porque estoy acostumbrado a tener siempre a los usuarios en la misma base de datos y tablas con relaciones con la tabla de Usuarios en la forma de Uno a Muchos, como a continuación
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; }
}
Mi pregunta es entonces.
Si los usuarios se almacenan en un servicio de autenticación externo como Auth0.com,
- ¿Cómo manejará la clase de factura la relación con el usuario?
- ¿Sería simplemente agregar una nueva propiedad subjectId en la tabla de facturas y esto tomará el valor de cualquier identificación que el servicio de autenticación asignó?
En este último caso, ¿sería la clase Factura algo como abajo?
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;}
}
Además, si los usuarios se almacenan en otro lugar, ¿cómo realiza una consulta como,
Select * from Users u inner join Invoices i where Users.Name='John Doe' and i.Date>Somedate.