1

我们正在开发一种 SSO 解决方案,该解决方案允许用户通过 .net 登录,然后最终访问 PHP 应用程序。我在 PHP 端工作,经过大量工作,我已经对 .net 使用用户名和票证到期日期设置的 cookie 进行了解码、解析和其他操作。

至少我认为我有。我现在的困难是 .net 开发人员现在太忙了,无法设置生成这些 cookie 的测试登录页面,以便我可以真正进行测试。我想知道设置这个测试页面需要多长时间。我的感觉是它不应该花很长时间,但我从来没有做过。(上帝禁止我像一个客户告诉开发人员“应该只需要一个小时左右。”)

我只是想知道我应该合理地期待什么。简单的登录创建一个formsauth票并将登录的用户发送到我的测试页面。FWIW,他们已经为当前正在使用的 .net 应用程序设置了任意数量的登录页面。

编辑:为了澄清,我不会实施这个。我想知道.net 开发人员这样做需要多长时间。

4

5 回答 5

4

是 ASP.NET 中表单身份验证的配置方面的演练。如果您可以在 Web 表单上编写一个包含两个文本框的页面和一个按钮,那么您可以完成剩下的工作。如果你从不做任何 ASP.NET,我会预算两个小时。

于 2009-03-18T17:02:43.023 回答
3

如果您使用ASP.NET Membership Provider,它几乎可以为您完成所有工作(包括登录表单本身)。

于 2009-03-18T17:00:54.293 回答
3

如果您之后的所有工作都是创建表单身份验证票证,那么这一行代码将完成:

FormsAuthentication.SetAuthCookie("Username", False)

第二个参数表示您是否希望 cookie 是永久的。

如果您正在寻找您的 asp.net 开发人员实现您描述的登录页面需要多少努力的量化,答案应该少于 15 分钟。

于 2009-03-18T17:02:46.737 回答
2

如果您没有登录数据库,可以使用内置的 sql 提供程序,这是您的配置方法:http: //msdn.microsoft.com/en-us/library/6e9y4s5t.aspx

如果您确实有数据,则可以实现自定义成员资格提供程序并且仅实现 ValidateUser 方法。您可以将其余部分留给 NotImplementedException 并在需要时实现更多功能:

public override bool ValidateUser(string username, string password)
{
   //return true or false;
}

即使您不使用具有最终实现的那个,您也可以将其用作一种快速方法。您可以在需要的地方扩展大多数其他部分,并且您使用 PHP 创建的唯一依赖项是身份验证票证,其中任何一个都使用该票证(也可以直接通过 FormsAuthentication)。

对于最终实现,您要确保密码得到正确保护,即在保存到数据库时进行哈希处理。使用内置提供程序,您可以自动完成。对于您的自定义代码,有一些简单的类可以为您执行此操作。

更新 1: 提供这样的时间估计真的很难。每个项目,开发人员等的时间差异很大。也就是说,走会员路线,在短短几个小时内进行测试是合理的,当然测试它确实有效(如果走自定义提供程序路线,这假设数据库就位,并且您有一些东西可以使登录变得简单)。如果您设置它只是为了测试它如何与 PHP 集成,我会使用内置提供程序,只需运行 sql 脚本来创建数据库,设置配置,添加登录页面/控件,测试它然后你很好,在这种情况下说一个小时。现在,这是一种自动模式,一种随心所欲的方法。

于 2009-03-18T17:12:30.630 回答
1

ASP.NET Forms-based Authentication is fairly easy to get started with and you can find a tutorial on the ASP.NET QuickStart Tutorials website. You want to look at the section on Forms-based Authentication. If you require a more sophisticated solution then take a look at the Membership and Role Manager.

于 2009-03-18T17:14:13.543 回答