IdentityServer4:存储/如何获取用户配置文件的位置?

时间:2018-02-28 16:13:22

标签: asp.net-mvc identityserver4

我正在使用asp.net mvc core(.net core 2)实现web api,并使用IdentityServer4处理身份验证,以及使用EntityFrameworkCore存储数据。

现在我们只是测试一些东西,所以我使用资源所有者授权类型,一些内存测试用户,但最终我们想用facebook登录和其他外部提供商替换它。

我目前正在尝试为数据库中某处的用户存储个人资料信息(姓名,电子邮件,个人资料图片等),但不确定在哪里定义/声明要执行此操作的类。

我是.net后端世界的新手,所以我列出了所有现有选项。我觉得ASP.Net Identity可能是一个解决方案,但到目前为止我似乎无法使用外部身份验证...

实际上,我认为我可以使用某种简单的唯一且经过验证的用户ID。

tl; dr:我想允许使用facebook登录,但我需要将用户个人资料数据存储在数据库中。我应该使用/实现哪些类?

1 个答案:

答案 0 :(得分:1)

我认为这里最好的解决方案是定制方法。为用户,客户端,资源等创建自己的数据库,并使用IdentityServer的解决方案来存储/检索它们。

根据用户信息 - 您可以在Identity Server解决方案的AccountController.cs中收到此信息:

/// <summary>
/// Post processing of external authentication
/// </summary>
[HttpGet]
public async Task<IActionResult> ExternalLoginCallback()
{
    // read external identity from the temporary cookie
    var result = await HttpContext.AuthenticateAsync(IdentityServer4.IdentityServerConstants.ExternalCookieAuthenticationScheme);

.../// More stuff here

}

result.Principal对象是声明主体,根据您的外部身份验证提供程序,有不同的声明。

从现在开始,这完全取决于您的架构。我会选择自定义服务(通过Startup.cs中的接口注入以获得更好的抽象),这些服务负责对自定义数据库的CRUD操作,但这是我的偏好。正如我所说 - 一切都取决于你。