【问题标题】:Website User Creation in ASP.NETASP.NET 中的网站用户创建
【发布时间】:2015-07-24 11:43:54
【问题描述】:

我有一个主网站托管在一台服务器上,另一个辅助网站是主网站的子域,位于另一台服务器上。我已经在各个站点之间实施了 SSO,这样当用户登录到主站点时,他也会自动登录到辅助站点;这仅在用户作为两个网站上的帐户存在时才有效(它们是不同的系统,但两个 ASP.NET 网站都使用表单身份验证)。

我需要更改主网站上的身份验证例程以调用辅助网站,并传递用户名。如果用户在辅助网站上不存在,则使用用户名创建他们的帐户。请注意,辅助站点不需要密码,因为用户只能通过主站点登录。

那么我的问题是:实现上述目标的最佳方法是什么?

我不认为我可以简单地加密主网站上的用户名并将其发送过来,然后在辅助站点上解密它(两个站点具有相同的机器密钥),因为它很容易被“欺骗”所以大概必须是传递辅助网站可以用来验证请求来自主网站的令牌的某种方式。有什么方法可以使用 cookie 来存储用户名的加密版本?如果是这样,我该怎么做?它是否比具有适当查询字符串参数的 URL 更好。

这一定是一个相当常见的场景,但我找不到任何关于如何做我需要做的事情的权威指南(最佳实践) - 任何建议都会非常受欢迎。

我现在的任务是通过 Web 服务提供用户创建。这意味着它应该更容易一些,因为我不必将用户重定向到我网站上的页面;相反,我只需要处理创建用户的请求。

为了保护要创建的用户的详细信息,我认为我只需要使用 HTTPS 但基于我之前所说的,我认为我也可以使用机器密钥加密。那么我的下一个问题是,我的客户应该如何将参数传递给我的 Web 服务?我应该只使用加密参数还是应该将参数嵌入到请求标头中?

【问题讨论】:

    标签: c# asp.net security single-sign-on


    【解决方案1】:

    使用Draft 中描述的 Oauth 协议
    这是 Dotnet 的实现 Oauth dotnet library

    【讨论】:

    • 感谢您的回复。 OAuth 听起来很强大,但我认为它可能对我需要的东西来说有点过头了。我可以使用机器密钥很容易地加密用户名,所以我想我正在寻找的是某种方式,然后为请求提供令牌,但用户肯定可以复制 URL 和查询字符串参数,只需进行简单的更改再次运行用户创建功能。我需要确保请求来自主网站。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 2011-10-19
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多