Bra*_*ery 5 asp.net forms-authentication
我有一个ASP .NET Web应用程序,它使用表单身份验证.我们称这个应用为"Foo".我正在创建另一个名为"Bar"的ASP .NET应用程序.
我想要发生的是用户登录到Foo,然后单击一个链接,将它们带到Bar应用程序中的页面.Bar应用程序不应要求Foo用户再次登录.Foo应用程序应该将安全票证传递给Bar应用程序,然后用户可以在Bar应用程序中进行他/她的业务.
我还想限制对Bar应用的访问.因此,如果用户在未首先登录的情况下尝试访问Bar应用程序,则会将其重定向到Foo登录页面.
这可能吗?如果是这样,我该如何实现呢?
我曾经这样做过一次,它是在 PHP 站点和 ASP.NET 站点之间进行的(我是 ASP.NET 开发人员,但也了解一些有关 PHP 的知识)。
如果 App1 是用户的入口点,那么在登录时 App1 应为该用户创建一个键值对,其中包含用户名和生成的密钥(例如 GUID)。以编程方式,它应该与 App2 通信并发送此密钥(例如启动后台线程)。假设用户 JohnDoe 在 App1 上成功登录。
App1 生成一个密钥(3l3kjlk3j4lkj34,JohnDoe)并通过某种通信将其发送到 App2(例如通过 HTTP 调用诸如 www.app2.com/SetTempKey.aspx?userId=JohnDoe&key=3l3kjlk3j4lkj34 之类的 URL - 允许的页面出于安全原因,仅来自特定 IP 的请求)。
App2将接收临时访问密钥并存储它。假设 App2 的登录页面位于 www.app2.com/login.aspx。
在 app1 中,您将生成一个指向 www.app2.com/login.aspx?tempKey=3l3kjlk3j4lkj34 的链接,并带有一个合适的标签,例如“转到我们的 app2”。当用户单击该链接时,将调用 app2 上的 login.aspx 页面。检查查询字符串中是否存在 tempKey 查询字符串参数,然后检查 app2 存储的临时密钥中密钥的有效性,发现这确实是 JohnDoe。
App2 只需调用 FormsAuthentication.RedirectFromLoginPage("JohnDoe", true) 即可记录他(首先是用户名,然后是 formsAuth cookie 是否应该持久/not_session_lived)。
...就这样了。
| 归档时间: |
|
| 查看次数: |
498 次 |
| 最近记录: |