Asp.net mvc 从MVC5应用程序的URL隐藏参数(敏感信息)

Asp.net mvc 从MVC5应用程序的URL隐藏参数(敏感信息),asp.net-mvc,iis,asp.net-mvc-5,Asp.net Mvc,Iis,Asp.net Mvc 5,我正在使用Asp.NETMVC5。当我点击一个链接(放在另一个网站上)时,我会导航到UserDetails.cshtml页面基本上,第三方网站正在将用户名和密码传递给我的网站,并使用该用户名和密码授权和显示更多用户信息。 这很好,但是Url是这样的 localhost:8080//Admin/UserDetails/UserName/PWD 我不想在URL中显示用户名和密码,即URL应类似于: localhost:8080//Admin/UserDetails/ 一种可能的解决方案是在IIS()

我正在使用Asp.NETMVC5。当我点击一个链接(放在另一个网站上)时,我会导航到UserDetails.cshtml页面基本上,第三方网站正在将用户名和密码传递给我的网站,并使用该用户名和密码授权和显示更多用户信息。

这很好,但是Url是这样的

localhost:8080//Admin/UserDetails/UserName/PWD

我不想在URL中显示用户名和密码,即URL应类似于:

localhost:8080//Admin/UserDetails/

一种可能的解决方案是在IIS()中重写URL

但是我相信通过使用MVC的路由机制,有一种更简单的方法来处理这个问题

请帮我弄明白同样的道理

编辑:
由于你们中的许多人对我为什么不在这里发表一篇表单感到困惑,让我重新阐述我的问题。我无法控制第三方应用程序,因此我无法要求他们向我的MVC应用程序发送表单。同样,第三方应用程序是Oracle Reporting应用程序(OBI),因此从该应用程序发布帖子可能也不可行

不。不。不。不。严肃地说,不。任何敏感信息都应该通过安全连接(HTTPS)通过邮件正文发送。您不能在GET请求中“隐藏”信息,因为它都是URI的一部分,或者是特定资源的位置。如果你移除一部分,它是一个完全不同的位置

更新

我发现很难相信任何需要通过HTTP进行身份验证且不是由带打字机的黑猩猩设计的第三方应用程序都不支持这样做的安全方法,特别是如果它是Oracle应用程序的话。我不熟悉这个特定的应用程序,但是,这里没有冒犯的意思,但是我更容易相信你在文档中遗漏了一些东西,或者只是没有找到正确的方法,然后我才相信你必须通过GET发送明文凭据


无论如何,正如我前面所说的,在GET请求中无法隐藏信息。GET中的所有数据都是URL的一部分,因此在浏览器位置栏或其他任何位置都清晰可见。不幸的是,除了仔细查看文档之外,我没有其他建议给您,如果有必要,甚至可以联系Oracle。无论是通过邮寄或类似OAuth的方式,几乎都必须有另一种方式。

让我从您的问题中反向设计您的需求:

我想有一个URI,当调用时,将允许访问我的网站的安全部分。此URI必须由第三方网站的访问者单击,我将此URI提供给他们。我想对URI隐藏凭据

您不能这样做,因为要求相互冲突。您不能分发将对向该URI发出请求的任何人进行身份验证的URI

您可以使用令牌(如
http://your-site/auth/$token
),但是,任何有权访问该URI的人都可以使用该URI进行身份验证,或者干脆将其放在自己的网站上


如果您有要向第三方站点公开的数据,请让该站点在后台向您的站点执行HTTP请求(使用令牌、用户名、头或任何您要用于身份验证的内容),并在其站点中显示响应。然后访问者将看不到该流量,无法共享URI,所有这些都将是安全的

为什么不发布数据?!让我重新提出我的问题。我无法控制第三方应用程序,因此我无法要求他们向我的MVC应用程序发送表单。同样,第三方应用程序是Oracle Reporting应用程序(OBI),因此从该应用程序发布帖子可能也不可行…更新了我的问题,提到了为什么我不能在此场景中使用Form POST。Token auth是处理此类场景的一种好方法&我也想到了这种方法,但所述第三方应用程序也没有生成令牌的能力。正如您在我的案例中提到的,第三方应用程序在将控件传递给我的ASP.Net MVC应用程序之前正在验证用户,但发布的内容是,用户可以保存URL所获得的内容/将其作为书签&如果其他任何人也使用该URL,他/她模仿相同的特权:(