我在我们的数据中心运行了一个asp.NET webapplication,我们希望客户通过单点登录进行登录.如果我们可以使用IIS集成安全性,这将非常容易.但是我们不能这样做.我们对客户的域控制器没有信任.我们希望网站可用于一般互联网.只有当人们从客户网络中连接时,他们才会自动登录.
我们拥有的是域帐户列表以及在asp.net代码中通过LDAP查询DC的方法.在IIS中允许匿名访问时,IIS永远不会向浏览器挑战凭据.因此我们的应用程序永远不会获得用户凭据.
有没有办法强制浏览器发送凭据(因此能够使用单点登录)与IIS接受匿名请求.
更新:
我尝试自己发送401:未经授权,www-authenticate:NTLM标头.接下来发生的事情(正如Fiddler告诉我的那样)是IIS完全控制并处理完整的请求链.据我从各种来源了解,IIS采用用户名,将挑战发送回浏览器.浏览器返回加密响应,IIS连接到域控制器以使用此响应对用户进行身份验证.
但是在我的方案中,IIS与客户端位于不同的Windows域中,无法对用户进行身份验证.因此,建立一个带有Windows身份验证功能的独立站点也无法正常工作.
现在我需要选择我正在研究的选项:
我在具有两个不同域的两个不同服务器上运行两个不同的站点.一个站点运行Joomla,另一个运行Moodle.我已经将Moodle服务器配置为基于Joomla站点上的users表进行身份验证,因此我们拥有权威的用户信息源.
我想做的是:在有人登录到Joomla网站后,提供一个Moodle网站的链接,该网站将默默登录,有点伪造单点登录解决方案.Joomla中的密码是MD5'd,每个密码都有自己的秘密盐.
如何解决这个问题的第一个想法是告诉Moodle密码以纯文本形式存储,然后通过隐藏的表单输入,在点击链接时发送加密密码.除了明显的安全问题之外,它还意味着如果他们尝试通过Moodle界面登录,他们需要输入一个巨大的MD5字符串,因为这是Moodle认为他们的密码.
我一直在考虑更改Moodle中的身份验证模块,这样如果提交的密码符合某些条件(例如:它是32个十六进制字符),那么在与Joomla版本进行比较之前不要使用MD5 - 问题在于任何人都可以(在发现加密密码时)然后使用它来登录.我需要的是一些特殊方式将加密密码从Joomla发送到Moodle并发信号通知Moodle以不同方式处理该登录请求.
有什么想法吗?
我试图通过添加"图像服务器"(用于处理图像请求的专用服务器)以及将.gif,.jpg,.png等的所有请求重定向到我来减少web服务器的负载.
我的问题是,处理重定向的最佳方法是什么?
感谢您提供有关最佳方法的任何建议.
--Update--
我要补充的一点是,这些是为第三方托管的域,因此我不能指望所有开发人员修改他们的代码并将他们的图像指向另一台服务器.
我已经看到了在不同场景下使用多个.net应用程序设置单点登录的资源,但是有可能为.NET和CF网站提供SSO解决方案吗?
谢谢!
我很高兴看到谷歌代码:google-api-ruby-client项目,因为对我而言,Ruby人员可以使用Google API来改善代码.
目前虽然我很难过,因为唯一的例子是使用Buzz和我的实验,谷歌翻译(v2)api必须与google-api-ruby-client中的 Buzz完全不同.
我被"资源管理器"演示示例所吸引 - 但据我所知,它并不是一个探险家.它所做的只是调用一个Buzz服务,然后在它已经知道的关于Buzz服务的事情上发表意见.对我来说,探险家应该让你"发现"所提供的服务和方法/功能,而不必已经了解它们.
我很想用这个听的红宝石命令行和桌面应用:谷歌API的红宝石,客户对服务的其他比Buzz和特别的翻译API(我少在现有的Ruby宝石有兴趣使用的翻译服务这点).
谢谢... 会的
特别是,可以使用PouchDB进行过滤复制吗?我想确保客户端不能省略过滤器,从而同步整个数据库.
我听说在Windows上您可以从Web浏览器登录到Web服务器,而无需通过常用的登录输入用户名和密码,而是使用NTLM协议直接使用Windows中的凭据.
这是如何实现的?Web服务器是否需要支持一些额外的身份验证?
更新:我要的是通用的Web服务器,而不仅仅是IIS.例如,如何在Apache上执行此操作?
好吧,我刚刚花了4个小时试图找出这个没有成功.我已经尝试了所有常见的嫌疑人,并搜索了ruby 1.9.1,加载路径,宝石,mac os x,freebsd,prawn等内容的每个组合.底线是这个:
当我从mac os x 10.5上的源代码编译ruby1.9.1-p129时,我得到的默认加载路径($ :)是:
ruby -e "puts $:" /usr/local/lib/ruby/gems /usr/local/lib/ruby/site_ruby/1.9.1 /usr/local/lib/ruby/site_ruby/1.9.1/i386-darwin9.7.0 /usr/local/lib/ruby/site_ruby /usr/local/lib/ruby/vendor_ruby/1.9.1 /usr/local/lib/ruby/vendor_ruby/1.9.1/i386-darwin9.7.0 /usr/local/lib/ruby/vendor_ruby /usr/local/lib/ruby/1.9.1 /usr/local/lib/ruby/1.9.1/i386-darwin9.7.0 .
例如,当我安装prawn gem时,我得到:
gem which prawn (checking gem prawn-0.5.0.1 for prawn) /prawn.rb
当我试图要求它时,我得到:
ruby -e "require 'prawn'"
-e:1:in `require': no such file to load -- prawn (LoadError)
from -e:1:in `'
我能够解决这个问题的唯一方法是做一些像这样的傻事:
$: << "/usr/local/lib/ruby/gems/1.9.1/gems/prawn-0.5.0.1/lib"
Run Code Online (Sandbox Code Playgroud)
当然,这完全是荒谬的.所以问题是如何让ruby 1.9.1识别并遵循正确的宝石路径?我从来没有遇到1.8.7这个问题,所以我假设它具体为1.9.1.我觉得我错过了一些完全明显的东西,任何帮助都会非常感激!
我决定尝试在一个简单的待办事项列表应用程序中首次使用elasticsearch.我按照这个视频使用模块并在模块本身没有修改任何内容我所做的就是创建应用程序并在控制器中添加类search.java.
Execution exception
NoNodeAvailableException occured : No node available
In {module:elasticsearch-0.4}/app/controllers/elasticsearch/ElasticSearchController.java (around line 367)
363:
// FIXME Currently we ignore the orderBy and order fields
364:
query.from((page - 1) * getPageSize()).size(getPageSize());
365:
query.hydrate(true);
366:
367:
return query.fetch();
368:
}
Run Code Online (Sandbox Code Playgroud)