【问题标题】:IdentityServer4: where to store / how to get user profile?IdentityServer4:在哪里存储/如何获取用户配置文件?
【发布时间】:2018-08-08 14:12:12
【问题描述】:

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

现在我们只是在测试一些东西,所以我正在使用 Resource Owner 授权类型,以及一些内存测试用户,但最终我们希望用 facebook 登录名和其他外部提供者来替换它。

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

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

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

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

【问题讨论】:

    标签: asp.net-mvc identityserver4


    【解决方案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 对象是一个声明主体,根据您的外部身份验证提供程序,有不同的声明。

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

    【讨论】:

    • 自定义 CRUD 听起来很合理。或者至少它可能对我有用。我不确定您提到的 AcountController.cs 是什么。我刚刚注意到我可以访问我的Controller 子类中的User 属性,这显然是ClaimsPrincipal。这又具有来自 IdentityServer4 的 GetSubjectId() 扩展方法,但那会是唯一标识符吗?如果我有 facebook 和 google 身份验证怎么办?
    • AccountController.cs 是 IdentityServer 快速启动的一部分,负责 UI、登录、登录回调等。你在说什么控制器?
    • 哦,原来如此。这个项目只是一个 web api,这里没有涉及 UI。我在这里指的控制器是IdentityController,如下所示:identityserver4.readthedocs.io/en/release/quickstarts/…
    • 但这是您要使用 Identity Server 保护的 API。您没有单独的身份服务器解决方案吗?上一步,在您展示之前的一步,您实际设置身份服务器本身,然后添加 API(您发送的那个)。
    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 2010-10-15
    相关资源
    最近更新 更多