我正在研究Asp.Net MVC 5.当我点击一个链接(放在另一个网站)时,我导航到UserDetails.cshtml页面。 基本上第三方网站正在传递UserName&我的网站密码&使用我授权&显示更多用户信息。
很好但是网址看起来像这样
本地主机:8080 //管理员/的UserDetails /用户名/密码。
我不想显示UserName& URL中的密码,即URL应如下所示:
本地主机:8080 //管理员/的UserDetails /
一种可能的解决方案是重写IIS中的URL(http://www.hanselman.com/blog/ASPNETMVCAndTheNewIIS7RewriteModule.aspx)
但我相信有一种更简单的方法可以通过使用MVC的路由机制来处理这个问题。
请帮我弄清楚一样。
编辑: 由于很多人感到困惑为什么我不在这里做表格帖子,让我重新构建我的问题。我无法控制第三方应用程序,因此我无法请求他们将表单发布到我的MVC应用程序。第三方应用程序再次是Oracle报告应用程序(OBI),因此从该应用程序执行POST可能也不可行......
答案 0 :(得分:2)
让我从您的问题中反向设计您的要求:
我希望有一个URI,在调用时可以访问我网站的安全部分。必须由第三方网站的访问者点击此URI,我将该URI提供给。我想隐藏URI中的凭据。
你不能这样做,要求是矛盾的。您无法分发将验证向该URI发出请求的任何人的URI。
您可以使用令牌(例如http://your-site/auth/$token
)执行某些操作,但是仍然可以使用该URI进行身份验证,或者只是将其放在自己的网站上。
如果您要向第三方网站公开数据,请让该网站在您网站的后台执行HTTP请求(包含令牌,用户名,标题或您要用于进行身份验证的任何内容),并显示他们网站的回复。然后访问者将看不到该流量,无法共享URI并且所有内容都是安全的。
答案 1 :(得分:1)
没有。不,不。非常认真,没有。任何敏感信息都应通过邮件主体通过安全连接(HTTPS)发送。您不能在GET请求中“隐藏”信息,因为它是URI的所有部分或特定资源的位置。如果你删除一部分,它就是一个完全不同的位置。
<强>更新强>
我发现很难相信任何需要通过HTTP进行身份验证并且不是由带打字机的黑猩猩设计的第三方应用程序都不支持安全方法所以,特别是如果它是一个Oracle应用程序。我不熟悉这个特定的应用程序,但是,这里没有任何冒犯意味着,但我更容易相信你错过了文档中的某些内容,或者根本没有找到正确的方法然而< / em>在我相信你有通过GET发送明文凭据之前。
无论如何,正如我之前所说,在GET请求中无法隐藏信息。 GET中的所有数据都是URL的一部分,因此在浏览器位置栏或其他任何内容中都清晰可见。不幸的是,除了仔细查看文档之外,我没有任何建议,如果有必要,甚至可以联系Oracle。无论是通过帖子还是像OAuth这样的东西,几乎都有另一种方式。