我正在尝试在我们的一个内部网站上实现NTLM身份验证,一切正常.我没有的一个难题是如何从NTLM获取信息并使用Active Directory进行身份验证.
有一个很好的描述NTLM和用于密码的加密,我用来实现这一点,但我不知道如何验证用户的密码是否有效.
我正在使用ColdFusion,但是这个问题的解决方案可以是任何语言(Java,Python,PHP等).
编辑:
我在Redhat Enterprise Linux上使用ColdFusion.不幸的是,我们不能使用IIS来管理它,而是必须为此编写或使用第三方工具.
更新 - 我得到了这个工作,这就是我做的
请注意,以下方法仅适用于NTLMv1,并且不适用于NTLMv2.如果您无法使用NTLMv1,您可以尝试Jespa,它支持NTLMv2但不是开源,或者您可以使用Kerberos/SPNEGO.
这是我的web.xml:
<web-app>
<display-name>Ntlm</display-name>
<filter>
<filter-name>NtlmHttpFilter</filter-name>
<filter-class>jcifs.http.NtlmHttpFilter</filter-class>
<init-param>
<param-name>jcifs.http.domainController</param-name>
<param-value>dc01.corp.example.com</param-value>
</init-param>
<init-param>
<param-name>jcifs.smb.client.domain</param-name>
<param-value>CORP.EXAMPLE.COM</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>NtlmHttpFilter</filter-name>
<url-pattern>/admin/*</url-pattern>
</filter-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)
现在所有匹配的URL /admin/*都需要NTLM身份验证.
我已经开始设计一个完全基于Web的ColdFusion应用程序.没有太多使用Flash表单或AJAX.
第一个版本是严格的Web应用程序.版本2将是Flex前端.
我想设计和构建东西,以便Flex层可以使用现有的逻辑.没关系,如果这意味着我必须在版本1中做额外的工作.我想硬化逻辑代码一次而不是重新考虑因素.
有什么值得考虑/设计/实施的东西,这将极大地帮助以这种方式设计应用程序?
我曾经在我工作的一家商店每隔几天就收到一次错误,其中一位用户称之为"Beak",因为她认为这让她想起了一个:
<.
......在源头看起来像:
<P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><.</B>
通过在ColdFusion服务器上弹跳JRun可以很容易地逆转"Beak",当我直接控制我的服务器时,这对我来说已经足够了,并且弹跳它不花时间并且没有太严重的影响.
现在我在一个我没有管理员访问网络服务器的商店,而且(从商业角度来看),服务器在任何特定时刻都在交易大美元符号,并且不能被反弹.
谷歌无法搜索除随机收集的B和P之外的任何东西,我的不懈好奇心永远受到挫败.
但是现在......现在我已经......所以我知道了.
我不能说它是CF,事实上,我怀疑它实际上是Java ......或者是IIS ......或者是宇宙用刺耳的喙棒戳我...
什么是Beak,我怎么让它消失?
编辑困惑...
我不能说我可以让问题更清楚,但我可以说缺乏清晰度主要是错误的一个功能,而不是我缺乏包容性.
错误不是来自一段代码......没有特定的行号...查看日志文件从未显示在问题发生之前运行的模板或模板.
一旦触发,错误会影响从服务器请求的每个模板,该效果是返回此字符串,而不是其他任何内容,以响应HTTP请求: <P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><B><P><.</B>
重新启动JRun服务会导致问题消失......重置Web服务器(在所有情况下都是IIS)或数据库服务器(MSSQL,MySQL和Access)或服务器本身(窗口,各种版本,各种硬件)是不必要的.
老实说,我没想到任何一个没有看到过这种错误的人甚至没有回应.我很欣赏那些有意义的人尝试过,但这不是Web Developer Oversight错误(在传统意义上),并且可能不需要代码片段来识别或解决它.
我希望这至少可以澄清我缺乏信息的程度,以阐明我为什么要求提供更多信息.
我有一个.jar文件,我放在我的D:\ Coldfusion8\wwwroot\web-inf\lib \目录中.该文件是abcdef.jar
这是我第一次这样做,不知道我的createObject()中的路径应该是什么.
<cfset abcObj = createObject("java","com.abcdef") />
<cfset result = acbObj.doStuff("123456") />
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到了
Object Instantiation Exception.
Class not found: com.vp4jo_b
Run Code Online (Sandbox Code Playgroud)
我在路上错过了什么?
CFC的一个重要功能是能够为直接.cfm页面和Flex应用程序重用代码.
我开发的一个这样的应用程序使用Flex来实现其图表功能,并且需要访问cfc中的'getResults()'函数.
所有这些内容都是在身份验证机制背后,但由于cfc将自己打开一个wsdl请求:
如果正确制作了URL查询,它实际上会将结果返回给浏览器:
https://myserver.com/c/functions.cfc?method=getResults&Term=2009&Course=Anatomy
人们用什么技术来保护cfc免受直接访问,除非请求直接来自CFML处理器或来自Flex Remoting?
我有一个密码哈希存储在一个表中,并通过以下coldfusion脚本放在那里 -
#Hash(Encrypt(Form.UserPassword,GetSiteVars.EnCode))#
Run Code Online (Sandbox Code Playgroud)
我想在ac#应用程序中添加一些外部功能.我希望能够利用已存在的数据,以便我可以对用户进行身份验证.有谁知道如何在c#中复制上面的coldfusion代码?
谢谢你的任何想法.
我们正在尝试在ColdFusion中计算HMAC-SHA256摘要,我们正在使用HMAC CFC,但在一种情况下,与使用不同语言生成的摘要相比,它产生了不同的摘要结果 - 使用Ruby和PHP尝试了相同的数据并获得预期的结果.我也尝试了它所基于的CF_HMAC自定义标签并获得相同的结果.
据我所知,从CF8 encrypt()支持HMAC-SHA256,但它只在Enterprise(我们没有)中可用,甚至在开发人员版本中也没有供我测试.
所以我的问题是我可以通过从CF访问Java来实现这一点吗?
通常你使用cfscript创建一个函数,如:
<cfscript>
function foo() { return "bar"; }
</cfscript>
Run Code Online (Sandbox Code Playgroud)
有没有办法将它声明为私有函数,只能用于同一个cfc中的其他方法?
我知道你可以用标签做到:
<cffunction name="foo" access="private">
<cfreturn "bar">
</cffunction>
Run Code Online (Sandbox Code Playgroud)
但我不想重写已经用cfscript编写的这个大函数.
我正在尝试匹配这个我可以用alt-0146输入的字符.Word告诉我它是unicode 0x2019但我似乎无法在ColdFusion中使用正则表达式匹配它.这是我用来匹配2到10个字母和撇号以及这个字符的片段
[[:alpha:]'\x2019]{2,10}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有任何想法吗?
我正在尝试使用他们的OAuth API与Twitter集成.我在这里下载并尝试了CF实现:http://oauth.riaforge.org/但没有成功.任何人都有一个简单的CF to Twitter OAuth示例,用于授权用户,获取令牌和使用它?
coldfusion ×10
java ×3
apache-flex ×2
architecture ×1
c# ×1
cfc ×1
coldfusion-8 ×1
cryptography ×1
encryption ×1
flex3 ×1
hmac ×1
http ×1
iis ×1
ntlm ×1
oauth ×1
regex ×1
remoting ×1
security ×1
twitter ×1
unicode ×1