【问题标题】:shared authentication with cookie and token in identity server与身份服务器中的 cookie 和令牌共享身份验证
【发布时间】:2020-06-06 22:07:42
【问题描述】:

我有一个 MVC 应用程序,它使用身份服务器和基于 cookie 的身份验证。

我们创建了一个新的 spa 应用程序,该应用程序通过承载令牌使用身份服务器身份验证。

一切正常,但用户目前需要登录两次,每个应用程序一次。

是否有共享身份验证会话的解决方案?如果可能的话,我宁愿不必从 spa 解密 cookie。

编辑:

我看到的是 SPA 上的身份验证代码流在会话存储中填充了许多值,而 MVC(客户端凭据流)应用程序没有获取这些值。

我应该手动反映这些更改吗?我看到两者都使用安全信息填充 cookie,但 SPA 只是忽略它。

【问题讨论】:

  • 如果您使用的是隐式或授权码等流,那么您应该开箱即用 SSO。你能解释一下哪些因素可能会阻止它发挥作用吗?
  • 我已经看到,在授权代码之后,我得到了一个 sso cookie,但它被使用客户端凭据的应用程序忽略(这意味着我被要求第二次登录)。同样的情况发生在另一个方向(首先是客户端凭据,然后是授权码)
  • 使用客户端凭据时,您不会获得(也不需要)SSO。只有在使用基于浏览器的用户上下文流时才能获得它。
  • 两个应用程序都使用基于浏览器的用户上下文流。客户端凭据是 .net mvc 应用程序,身份验证代码是 .net 核心 SPA 应用程序

标签: single-page-application identityserver4 bearer-token


【解决方案1】:

最终原因是由于身份验证/身份验证端点的大小写不同。 idsrv 和 idsrvsession 的 cookie 被标记为区分大小写,因此我们最终为会话提供了两个不同的 cookie(因此创建了 2 个不同的会话)。

更改两个端点中的一个以匹配另一个端点解决了该问题,尽管已向执行与身份服务器连接的库请求强制参数小写的 CR。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-11-23
    • 2011-08-09
    • 2015-10-29
    相关资源
    最近更新 更多