【问题标题】:Identity Server use case for Resource Owner Grant flow资源所有者授予流程的身份服务器用例
【发布时间】:2016-08-14 16:42:29
【问题描述】:

这个问题更像是一个架构问题。我想知道以下设置是否有意义。

  1. 客户端:用户浏览器
  2. Web 服务器:为 Web 应用程序提供 Web api 的服务器。
  3. 身份服务器

当Client向Web server发送登录请求时,Web server收到请求后通过Resource Owner Grant类型发送给Identity server,获取访问令牌。

当客户端发送资源请求时,它使用上一步中的访问令牌访问Web服务器,并且Web服务器每次在提供资源之前都需要与Identity server验证请求。

但是,我认为这种架构可能存在一些问题,例如

即使在 SSL 连接下,Web 服务器也无法确定 Client 是否是信任客户端。客户端始终可以获取访问令牌并向 Web 服务器发送请求。但是,我觉得这个问题也存在于其他授权类型中。 我认为只要用户不能更改授权范围或其他人拦截令牌(在 SSL 连接下),应该没问题。

有什么想法吗?谢谢!

【问题讨论】:

    标签: oauth-2.0 identityserver3 identityserver4


    【解决方案1】:

    基于浏览器的应用程序应该使用交互式流程 - 例如。混合流。

    这样,客户端必须先通过 idsrv 进行身份验证,然后才能获取令牌。

    查看 OIDC 规范:

    https://openid.net/specs/openid-connect-core-1_0.html#HybridFlowAuth

    【讨论】:

    • 好吧,我的问题更像是当 Web 服务器和 IDSrv 都来自同一方时,进行 3-legged 身份验证而不是 2-legged 有什么好处?
    • 如果没有浏览器流程,您将无法在多个应用之间获得 SSO。
    • 好点。因此,如果我让它像用户将用户名/密码发送到 Web srv 并且 Web srv 将其发送到 IDSrv 以获取访问令牌(资源所有者流)。一旦 Web srv 得到它,将它发送回给用户。它仍然具有 SSO,并且用户不会通过资源所有者流直接与 IDSrv 对话。行得通吗?因为其他流程需要 URI 重定向,这对于现有的原生应用来说并不理想。
    • @maxisam,你让它这样工作吗?我正在考虑像你描述的那样做。谢谢。
    • 嗯,我认为它应该可以工作,但是,这个项目目前处于搁置状态。这是我的测试项目。我会尽快回复。
    猜你喜欢
    • 2015-09-08
    • 1970-01-01
    • 2017-10-08
    • 1970-01-01
    • 2015-04-21
    • 2013-02-20
    • 2017-06-26
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多