【问题标题】:Where to implement the user profile page using IdentityServer4?在哪里使用 IdentityServer4 实现用户配置文件页面?
【发布时间】:2017-11-16 22:24:51
【问题描述】:

我在 ASP.NET Core 中有 3 个项目的解决方案:

  1. MVC --- 没有 DB(调用 API)
  2. Web API --- MySQL 5.7 自有数据库
  3. IdentityServer4 + ASP.NET Identity --- MySQL 5.7 自有数据库

按照https://identityserver4.readthedocs.io/ 上的精彩文档,我已经设法使用内存客户端、用户、资源在所有三个应用程序之间进行授权和身份验证。

目前我正在使用 HybridAndClientCredentials 流程,该流程适用于现有用户和注册用户。使用 ASP.NET 身份表将新注册的用户保存在 IdentityServer DB 中。

问题:

  1. 我的一个客户要求规定用户应该在 MVC 应用程序中有一个个人资料页面,用户在获得授权和身份验证成功后应该被重定向到该页面。

    我现在正在做的是调用 MVC 应用程序中的 API,即 OnTickedReceived 事件,最初声称要在 API DB 中创建用户,但我怀疑这是正确的实现。

    由于注册已完成并在 IdentityServer 级别持久化,并且有关用户的一些数据存储在那里,我应该在那里创建个人资料页面,还是应该在注册流程中的某处调用 API 以在其中创建用户API DB,然后将用户重定向到 MVC 应用程序以输入完整配置文件所需的其余详细信息?

  2. 另一项要求规定,用户应该能够授予对其他用户详细信息的读/写访问权限(例如在关联的帐户或其他内容中)。

【问题讨论】:

    标签: asp.net-core oauth-2.0 openid-connect identityserver4


    【解决方案1】:

    不幸的是,“这取决于”。

    让我们先问“什么是个人资料页面?”。个人资料页面上有哪些信息,以及特定于您的应用程序 (MVC/WebApi) 或身份管理系统的信息。

    IdentityServer 支持带有 ASP.NET 身份的 OIDC UserInfo Endpoint 和 Profile 范围,因此可以正常工作。 (http://openid.net/specs/openid-connect-core-1_0.html#UserInfo)。您可以将 IdentityClaims 插入到 AspNetUserClaims 表中,并在调用 UserInfo 端点时将其取回。

    但也许需求中提到的这个配置文件页面只是属于应用程序域的信息,因此在身份管理系统中没有业务。然后,您当前的方法是可以的 - 尽管您可以使用过滤器属性而不是身份验证事件(这只是一个想法,可能不会更好)。

    对我来说,决定权在于谁拥有这个所谓的“个人资料”信息。是身份管理系统还是您的业务应用程序。

    如果配置文件信息可以在身份管理系统的任何客户端之间共享,则将其放入身份管理系统中。

    【讨论】:

    • 感谢您的意见。就像你在上一段中所说的那样,是的,这也是我的问题。目前,将个人资料视为显示用户特定详细信息的页面,可以更新(编辑/删除)它们,如名字、姓氏、性别、国家、地址、个人身份证号码、电话等。
    • 还有一点,STS 和 API 稍后也会被原生应用使用/消费。
    猜你喜欢
    • 2018-08-08
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 2010-11-07
    • 2012-12-01
    • 2019-07-01
    • 2017-10-19
    • 2015-05-25
    相关资源
    最近更新 更多