存储跨域Web服务访问凭据的最佳实践?【JAVA教程】

!
也想出现在这里? 联系我们
信息

存储跨域Web服务访问凭据的最佳实践?,第1张

概述存储跨域Web服务访问凭据的最佳实践

我正在开发一个应用程序,它将使用Web服务连接到各种远程服务器,以检索有关这些(windows)机器的一些状态信息。

它在单个域中运行良好,我们可以使用windows身份valIDation,并确保调用服务的用户具有正确的凭据。 但是,如果我们正在跨域进行工作,那么我们需要在应用程序端为用户存储一组具有必要权限的凭据。

有没有一个标准的方式来存储用于这些目的凭证,在windows中的某种中央密码存储或方便的内置库提供这种function? 如果没有,那么在中央机器上保持密码安全的最佳方法是什么?当需要调用这些服务时,确保远程机器证书可用。

我希望这个应用程序大部分都安装在windows Server 2003或2008的其中一个 *** 作系统上,如果这样做可以改变的话。

CredUIPromptForCredentials强制手动select用户名

将计划(例如CMS://)关联到windows程序

启动后自动login到windows

CreateProcessWithlogonW()问题 – 需要用同一个用户启动subprocess

windows上的Java“单一login”(使用“Credential Manager”中的凭据)是否被禁用?

存储的用户名和密码

凭证提供者通过networking进行通信

使用windows凭据进行FTPlogin

存储windows(NT)服务使用的密码

禁用Credential ProvIDer上的区域

我建议你看看“ windows IDentity Foundation ”。 这对你来说可能是矫枉过正的,或者前提条件可能不匹配,但无论如何,值得一读的是,在基于索赔的微软技术体系结构方面,它是非常有启发性的。

开发人员的两份主要白皮书是:

基于索赔的架构概述

面向开发人员的Microsoft windows IDentity Foundation(WIF)白皮书

我认为这不是一个Silverlight或Flash应用程序的问题,那些会有一些特殊的东西…

我已经使用了芬兰金融服务联合会(所有主要芬兰银行都使用)的认证系统。 它是这样的:

您的客户端和服务器都有一个密钥(或2个密钥)。

您可以将其存储到windows注册表中的一个自定义位置 (这对.NET来说很简单,您可以控制注册表访问)。 不要硬编码密码,否则有人可以使用反射来获取它。 如果平台不够安全,在文件夹中定制的xml文件也可能是危险的。

然后,我们有这个请求,比方说WebService REST Url,并且有一些ID:

http:// MYSERVER / MyItems / 15

现在,我们需要使用时间戳和单向散列算法。 有很多可用的,如md5,SHA1,SHA512,…(也内置于Microsoft .NET库)。 我们通过ID和timestamp(也许还有一些其他参数)来计算散列值。

为了简化一下,这些算法就像模算法一样工作:假设我的ID是11,密钥是3,然后模11%3 = 2,现在hash是2,如果你知道ID(11)和哈希(2),你不能得到密钥。

真正的要求是这样的:

http:// MYSERVER / MyItems / 15时间戳= 20110304171900&散列= 89A234BA645FD56

该服务将检查哈希。 如果一些黑客有足够的时间,他们可以猜测有效的请求。 但是服务也会检查时间戳是否正常,比如5分钟到5分钟。 所以你不能调整请求,因为它会修改哈希。

当然还有一件事是使用SSL协议。 否则,您的请求可以从随机代理服务器读取。

我也会推荐windows IDentity Foundation,但这是另一种选择。

总结

以上是内存溢出为你收集整理的存储跨域Web服务访问凭据的最佳实践?全部内容,希望文章能够帮你解决存储跨域Web服务访问凭据的最佳实践?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

© 版权声明
THE END
喜欢就支持一下吧
点赞104 分享
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容