【问题标题】:Identity Server 4 and ASP.NET Core Identity身份服务器 4 和 ASP.NET Core 身份
【发布时间】:2017-07-26 13:08:46
【问题描述】:

我正在处理的一个项目由一个 Web API、一个单页响应应用程序和一个移动应用程序组成。从每个客户端,用户需要提供他们的用户名和密码才能访问 Web API 的受保护部分。我设置了一个 Identity Server 4 身份验证服务器,它使用我自己实现的 IProfileServiceIResourceOwnerPasswordValidator 接口,因为我使用的是 ASP.NET Core Identity。这允许 Identity Server 访问 ASP.NET Core 标识 UserManagerRoleManagerSignInManagers 以确定提供的用户名和密码是否有效。

我一直使用的授权类型是“ResourceOwnerPassword”类型。我还没有将授权完全集成到单页应用程序中,但我可以将用户的用户名和密码传递给身份服务器,并生成一个令牌,我可以将它添加到我的 API 请求的标头中。

我对 Identity Server 和相关技术进行了更多研究,因为我对这一切都不熟悉。似乎不希望使用 ResourceOwnerPassword 授权类型。据我所知,我似乎应该使用隐式授权类型,但我不完全理解用户名和密码如何适应该流程。有谁知道我应该使用哪种类型?我描述的系统是否只能使用 ResourceOwnerPassword 授权类型?

【问题讨论】:

    标签: asp.net-core identityserver4 asp.net-core-identity


    【解决方案1】:

    资源所有者密码授权类型在 IdentityServer 文档中有这样的描述:

    资源所有者密码授权类型允许在 通过将用户名和密码发送到令牌来代表用户 端点。这就是所谓的“非交互式”身份验证,并且是 一般不推荐。

    某些遗留或第一方集成可能是有原因的 场景,这种授权类型很有用,但一般 建议使用交互式流程,例如隐式或混合式 用于用户身份验证。

    (重点是我的)

    所有其他流程都涉及重定向:用户在您的网站上单击登录并被重定向到身份服务器登录页面,他们在那里输入他们的凭据,然后被重定向回您的原始网页。

    这与使用您的 Google 帐户相同,例如登录其他网站。 Google 不希望您在自己的站点中输入该用户名和密码,因为您可能会窃取它们,这通常是不鼓励使用资源所有者密码授予类型的原因。 但是,如果您正在进行第一方集成(即网站是您的,并且您相信用户在您的网站上输入密码),那么我看不出问题出在哪里。

    您应该阅读(并查看示例)其他流/授权类型。他们肯定有自己的位置,我不会解雇他们,但如果你正在做第一方集成,那么你所做的应该没问题。

    【讨论】:

      猜你喜欢
      • 2020-11-17
      • 2017-12-22
      • 1970-01-01
      • 2019-07-11
      • 2019-05-25
      • 2019-03-24
      • 2019-09-24
      • 2020-10-08
      • 1970-01-01
      相关资源
      最近更新 更多