asp.net-mvc - IdentityServer4:在哪里存储/如何获取用户配置文件?

标签 asp.net-mvc identityserver4

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

现在我们只是在测试一些东西,所以我正在使用资源所有者授予类型,以及一些内存中的测试用户,但最终我们希望用 Facebook 登录以及其他外部提供商来替换它。

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

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

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

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

最佳答案

我认为最好的解决方案是自定义方法。为用户、客户端、资源等创建您自己的数据库,并使用 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 对象是一个声明主体,并且根据您的外部身份验证提供商 - 有不同的声明。

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

关于asp.net-mvc - IdentityServer4:在哪里存储/如何获取用户配置文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49033946/

相关文章:

c# - 从 config 加载一些,从 configSource 加载一些

c# - 使用 Asp.net Identity 删除角色

asp.net-mvc - 如何设置使用 knockout.js 检查的单选按钮?

asp.net-mvc - 迁移到实现IDataSource的ASP.NET MVC控件

c# - Identity Server 4 使用 IConfiguration 创建客户端

c# - 为什么最终用户必须注销两次?

asp.net mvc 5 投票系统

routes - 我的 AspNet Core 3.1 身份页面在 IdentityServer4 中给出 404。我怎样才能访问这些?这是路线问题吗?

asp.net-core-mvc - 支持多个同类型的AuthenticationSchemes

angular - 使用 angular-oauth2-oidc 和 "silent refresh"没有白名单 silent-refresh.html