小编Dav*_*Can的帖子

如何使用证书而不是密码进行身份验证?

我有一个小的C#MVC5应用程序,我正在构建并准备添加用户安全模块.(之前我刚刚创建了一个用于测试角色的会话变量)但是,我的安全需求不适合我见过的任何预构建的安全模块,即SimpleMembership等.

以下是我的情况和需求的摘要:

  • 没有密码-用户名/密码身份验证是容许

  • 用户使用带有客户端证书的智能卡在Web服务器级别进行身份验证 - 我不管理服务器,也永远不会看到他们的卡

  • IIS填充了Request.ClientCertificate和其他一些,这是我有权访问的

  • 我的应用程序将拥有专用的用户帐户 - 不使用Windows身份验证等 - 所以更像是用户名/密码系统,而无需输入用户名或密码

  • 服务器进行身份验证他们访问服务器通过使用某种形式的Windows验证他们的智能卡证书的,但我不能,我必须接受装入请求集合证书

  • 用户表存储在SQL Server中(现在......)

  • 不希望使用EntityFramework,因为所有应用程序数据都来自Oracle数据库并且试图获得批准将身份验证/授权表移入其中并消除两个数据库的工作,并且EF for Oracle在我们的环境中不起作用,所以我' m使用OleDb代替:(

实施这样的计划的最佳方法是什么?我开始做的是构建三个表 - Users,Roles和UserRoles - 而Users表包含(string)ClientCertificate的副本.进入的用户将通过拉取Request.ClientCertificate并查找匹配的用户记录,然后从UserRoles获取角色列表来对应用程序进行身份验证.用户对象将存储在包含用户和角色信息的会话中,并且属性将在控制器上用于通过要求某些角色来控制访问.

(我们有另一个使用这种基本方法的应用程序,但它是Linux上的J2EE所以我不能只重用它的代码)

但是,我也开始阅读有关IIdentity和IPrincipal的内容,但我不清楚这是否是我可以使用的东西.显然,我更喜欢使用由专家设计的安全模型.那么我应该使用继承自IIdentity和IPrincipal的自定义类来构建我的身份验证系统吗?或者我应该使用其他方法吗?

完全有可能像SimpleMembership这样的东西可以定制,以满足我的需求,但如果是这样,我不知道它.

感谢您的建议,非常感谢.

c# asp.net authentication asp.net-mvc

7
推荐指数
1
解决办法
3066
查看次数

如何创建 MVC 路由来拦截经典 ASP URL?

我的问题在前面

如何构造一个路由,以便 MVC 拦截经典 ASP URL 并执行 MVC 操作?

我正在将旧版经典 ASP 应用程序迁移到 MVC,并且需要让 MVC 拦截几个旧版 ASP URL,因为它们是对应用程序进行外部访问的主要端点。但我似乎不知道如何正确地做到这一点。

我检查了其他几个问题,但没有找到我要找的东西,但也许我今天的搜索能力很差。这个是特定于区域的,但看起来与我的类似,但仍然不起作用,是一种可能的解决方法,但我真的宁愿在 MVC 中完全处理这个问题并完全消除遗留文件。

我想做的事

给定:/foo/bar.asp

映射到:/InboundLinks/HandleBar

(一个 URL 将是 GET 请求,但另一个 URL 将是包含一些敏感数据的 POST,因此我需要拦截它们,并且 POST 数据仍然可用于 MVC,不确定 301 重定向是否会执行此操作)

我不想做什么

我根本不想运行经典的 ASP 页面。(如果这是唯一的解决方法,我愿意让它仅执行 301 重定向到 MVC URL,但仅此而已)我希望 MVC 拦截并处理 URL。我这么说是因为我在这里和其他地方发现的一些问题似乎在这一点上产生了一些混乱。

我已经尝试过的

routes.MapRoute(
    name: "LegacyBarUrl",
    url:  "foo/bar.asp",
    defaults: new { controller = "InboundLinks", action = "HandleBar" }
);
Run Code Online (Sandbox Code Playgroud)

但这会返回404 Not Found错误。

环境

Visual Studio 2013 在 Windows 7 …

asp.net-mvc asp.net-mvc-routing

5
推荐指数
1
解决办法
1413
查看次数

如何从服务器GAC中删除.NET程序集DLL

我正在尝试将包含Oracle ODP.NET库的VS2013项目部署到Windows 2008 IIS服务器,并从程序集"Oracle.ManagedDataAccess,Version = 4.121"收到错误"无法加载类型'OracleInternal.Common.ConfigBaseClass'. 2.0.""我在网上发现的这是由项目的ODP与GAC中具有ODP的服务器之间的冲突引起的.然后,说明将从GAC中删除ODP.服务器上的GAC中有Oracle DLL.我们99%确定这些DLL在之前尝试在该盒子上设置Oracle的时候已经在GAC中出现了,因为该服务器上的其他任何项目都不应该使用Oracle.因此,我们应该安全地将其从GAC中删除.

但是,gacutil.exe仅在Visual Studio中可用,我们不允许将Visual Studio安装到服务器上.

那么如何在服务器上没有gacutil.exe的情况下从GAC卸载Oracle DLL呢?我们可以从目录中删除它们吗?或者我们是否需要将gacutil.exe从我的工作站复制到服务器才能执行此操作?或者还有另一种方法吗?(最好不涉及注册表编辑)

任何建议表示赞赏,谢谢.

.net iis-7 gac visual-studio-2013

5
推荐指数
1
解决办法
2万
查看次数