通过Ajax调用将经过身份验证的WIF会话从Web App A传递到Web App B

时间:2018-11-17 17:31:18

标签: c# asp.net asp.net-web-api2 restful-authentication wif

标题有点令人困惑,因为这很难解释。因此,首先,我将对该问题进行更详细的介绍。

因此,我在Web Api 2上有一个Rest API,该API目前通过使用FedAuth cookie的Microsoft Identity Model 3.5进行身份验证。此联邦身份验证Cookie是由另一个Web应用程序上的SessionAuthenticationModule发出的。该Web应用程序根据ADFS进行身份验证,并生成身份验证Cookie。我打算将该Cookie放在根路径上,并将其与Web应用程序2上的Rest API放在同一域中。

这样,在ajax调用上使用“ pass password true”,并且在cookie上设置了域,并且两个应用程序都在同一基本域上,其余api可以看到身份验证cookie,并且会话身份验证模块会使用它,并且rest api被验证为Web应用程序1上的登录用户。

问题在于,由于我无法控制的问题,我们无法将Cookie路径更改为在根路径上。因此,cookie不会传递给其余的api。

因此,我需要提出一种解决方案,以从父级Web应用程序身份验证上下文对其余api进行身份验证。我提出了一些想法:

  1. 插入Write Session Token,并使用新的cookie名称在根路径上生成专门用于API的第二个cookie,但我并不是真的想将Web请求上的身份验证有效载荷加倍(将cookie加倍) ...)
  2. 只需执行一些基本的rijandael加密,然后将登录的用户ID加密到新的Cookie中,然后使用它,然后在其余api中对此用户写一个授权过滤器,以验证该Cookie是否解密为有效的用户ID(带有一些盐) 。 api只需要知道谁是登录用户ID ...
  3. 将联合身份验证cookie设置为在脚本中可见(已加密,并且我们使用cors),然后我可以将ajax调用中的cookie块传递给其余api,因为我可以用js读取它们。
  4. ???

0 个答案:

没有答案