使用隐式流来获取Cookie

时间:2016-07-25 19:57:26

标签: cookies identityserver3

使用IDServer3,OWIN,angular2,WebAPI等

我在IDSrv中设置了2个客户端,一个MVC和一个JS / Angular,我试图实现SSO。目前SSO可以在我通过MVC应用程序(混合流程)登录时工作,因为这将在浏览器中设置cookie,并且当我通过隐式流程导航到登录时将被选中。但是,如果我首先尝试通过JS应用程序(隐式流程)登录,则不会设置cookie,因此不会实现SSO。当我们通过隐式流和混合流登录时,如何配置IDSrv来设置cookie?

编辑: 换句话说,是否可以将用于WebAPI的承载令牌auth和用于MVC的cookie auth一起使用,并且仍然可以在两者之间实现SSO。

编辑2: 由于答案证实了我的理解,我将再次重述这个问题。在JS(角度2)客户端中使用隐式流,如何通过IDSrv中的auth端点进行身份验证时获取令牌和cookie?目前只返回一个令牌。

1 个答案:

答案 0 :(得分:2)

是 - 因为idsrv和您的应用之间没有维护身份验证会话 - 但是在idsrv和您的浏览器之间。

每个应用程序必须设置自己的会话 - MVC通过cookie完成。在JS中通常使用会话存储等。

完成您的方案:

  1. 打开MVC应用

    • 使用idsrv进行身份验证。 idsrv设置身份验证cookie
    • 重定向回mvc
    • MVC设置自己的cookie以登录用户
  2. 打开JS应用

    • 使用idsrv进行身份验证。这次已经有一个现有的登录会话。没有显示登录UI,令牌直接发送回JS
    • JS验证响应并记住本地存储中的用户
  3. 每个客户端应用程序都需要以自己的方式登录用户(cookie与会话存储)。单点登录是因为存在与idsrv的额外会话(由idsrv自己的cookie维护)。