`
happmaoo
  • 浏览: 4472299 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

跨域或者Internet访问Remoting[Remoting FAQ]

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

[Remoting FAQ]

跨域或者Internet访问Remoting

Version

Date

Creator

Description

1.0.0.1

2006-6-1

郑昀@Ultrapower

草稿

继续阅读之前,我们假设您熟悉以下知识:

n Remoting

[需求]

虽然说,Remoting一般都在同一个域内调用,但有时候,也需要跨域访问,甚至于跨Internet访问。毕竟,让第三方远程测试下Remoting方法,不能要求人家加入你的域。

[现象]

在走TCP Channel访问Remoting情况下。

如果双方未作特殊处理,那么客户端会得到如下异常,提示对方Remoting服务不能信任你的身份:

异常信息

Unhandled Exception:

System.Security.Authentication.InvalidCredentialException:
The server has rejected the client credentials.

---> System.ComponentModel.Win32Exception: 登录没有成功

[分析]

在《RemotingFX2.0中的新特性》提到了这么一段话:

By default, a TCP client channel authenticates itself with the user identity under which the client process is running. You can specify an alternative identity by setting the useDefaultCredentials configuration property to false and setting the domain, username, and password configuration properties to specify an alternative identity.

默认情况下,一个TCP客户通道以当前运行的客户进程之下的用户标识来验证。也可以通过把useDefaultCredentials 配置属性设为false 并且设置domain, username, and password configuration 配置属性来设置特定的自定义标识。

[解决]

有人说,可以在服务端在注册Channel时,这么做:

将原来的ChannelServices.RegisterChannel(chan1, true);

改为

ChannelServices.RegisterChannel(chan1, false);

如果是这样声明的:

RemotingConfiguration.Configure(filename, true);

改为

RemotingConfiguration.Configure(filename,false);

这样来允许另外一个域的机器访问。

但是似乎没有作用。

下面这种做法,就不需要服务器端作改动。客户端调用时,需要知道服务器端的一个普通用户帐号密码,来配置自己的remoting

先看

客户端的Remoting配置信息

<system.runtime.remoting><p></p></system.runtime.remoting>

<application><p></p></application>

<client><p></p></client>

<wellknown type="XXXX,YYYY"></wellknown>

url="tcp://RemotingServer:Port/Demo"/>

<channels><p></p></channels>

<channel ref="tcp" style="COLOR: blue">secure="true"<span style="mso-spacerun: yes"> </span><p></p></channel>

impersonationLevel="Impersonation" protectionLevel="EncryptAndSign"

username="RemotingServer-UserName" password="PASSWORD"

domain="RemotingServer-DomainName">

<clientproviders><p></p></clientproviders>

<formatter ref="binary"></formatter>

<serverproviders><p></p></serverproviders>

<formatter ref="soap" typefilterlevel="Full"></formatter>

<formatter ref="binary" typefilterlevel="Full"></formatter>

用这样的配置就可以成功模拟服务器端的用户调用Remoting

[更多信息]

对于上面的配置信息,我们需要说明几个特别的节点:

Client-Settings

  • secure
    true/false: enables/disables security

  • username, password, domain
    if you don’t want to use the credentials of the client process, you can specify explicit ones here

  • impersonationLevel
    Identification: The server can use the client token only for identity information and role based checks
    Impersonation: The server can impersonate the client token to access server-local resources
    Delegation: The server can delegate the client credentials

  • protectionLevel
    None: clear text
    Encrypt/Sign: self explanatory
    EncryptAndSign: recommended setting

  • servicePrincipalName
    SPN of the server. Required for Kerberos. Can use SPN (service/domain) or account syntax (domain\service)




分享到:
评论

相关推荐

    linux geoserver允许跨域访问

    Linux中的geoserver安装,直接把geoserver.war放到tomcat/webapps下即可; geoserver默认是不允许跨域访问的,如果要允许跨域访问,请按以下步骤操作: (已在geoserver 2.12.5下亲测可用)

    链接修改及跨域访问的问题

    在IT领域,尤其是在Web开发中,跨域访问是一个常见的问题,因为浏览器的同源策略(Same-Origin Policy)限制了JavaScript从一个源获取资源到另一个源的能力。为了在不同软件系统间实现跨域通信,开发者需要采取一些...

    跨域访问数据-DEMO

    跨域访问数据是Web开发中的一个关键概念,特别是在构建分布式应用程序和API接口时。这个"跨域访问数据-DEMO"可能是一个示例项目,旨在演示如何在浏览器环境中跨越源限制,即同源策略,来获取JSON或XML数据。下面我们...

    js跨域访问后台

    根据提供的文件信息,本文将详细解释“JS跨域访问后台”的相关知识点,包括跨域的基本概念、实现方式以及具体的代码示例。 ### 跨域基本概念 在浏览器中,为了安全考虑,存在一种称为“同源策略”的机制。简单来说...

    js+jsp+json+tomcat跨域访问

    在IT行业中,跨域访问是Web开发中一个重要的概念,特别是在使用JavaScript、JSP、JSON以及前端库如jQuery时。本教程将详细讲解如何利用这些技术实现跨域数据交互。 首先,我们需要理解“跨域”这个术语。在浏览器的...

    tomcat解决跨域访问问题配置

    tomcat解决跨域访问问题,具体配置如下: 1、修改tomcat下的Conf/web.xml文件,在该文件内容中新增以下配置,注意,若该web.xml中存在其它filter,则需要将该filter放在所有filter前面; &lt;filter-name&gt;...

    iframe 跨域访问session

    然而,当涉及到跨域时,`iframe` 遇到的问题之一就是无法正常访问父页面或被嵌入页面的`session`。这是因为浏览器的同源策略(Same-Origin Policy)限制了不同源之间的交互,包括`session`和`cookie`。 同源策略是...

    基于Spring和Spring MVC实现可跨域访问的REST服务

    在IT行业中,构建可跨域访问的REST服务是常见的需求,特别是在Web开发中。这篇博客“基于Spring和Spring MVC实现可跨域访问的REST服务”深入探讨了如何使用这两个流行的Java框架来创建这样的服务。Spring作为核心...

    html静态页面,实现跨域访问

    请用google浏览器打开,页面百分比缩小到百分之三十再访问。 1、 请在服务器上部署附件war 2、 将【两个工程.zip】压缩包中的webChart.war和jdbc2json.war上传至apache-tomcat-8.0.33/webapps下 3、 启动tomcat,~/...

    跨域访问解决方案,关于跨域访问cookie的资料

    ### 跨域访问解决方案与Cookie处理 在现代Web开发中,跨域问题一直是困扰开发者的一大难题。当浏览器出于安全考虑阻止不同源之间的数据交互时,跨域问题便产生了。为了解决这一问题,并确保在跨域场景下可以正确地...

    解决openlayers跨域访问的解决方案

    然而,由于浏览器的同源策略限制,当你尝试从不同的域加载地图或者地理数据时,可能会遇到跨域访问的问题。下面将详细介绍如何解决OpenLayers中的跨域问题。 ### 一、理解同源策略 同源策略是Web浏览器的一项安全...

    开源android浏览器,访问跨域网页

    开发者可以通过自定义WebView的设置来处理跨域请求,例如启用跨域资源共享(CORS)或者通过JavaScript接口与Web内容交互。 Android SDK是开发Android应用的基础,包含了一系列的库、工具和文档,使得开发者可以使用...

    跨域页面访问问题解决.doc

    跨域页面访问问题解决 跨域页面访问问题是指在多个系统集成的情况下,主系统以 iframe 或 frameset 的方式将其他子系统的页面嵌进来,导致浏览器阻止 iframe 或 frameset 的 cookie,进而使 SESSION 失效。解决办法...

    js解决跨域访问问题

    ### JS解决跨域访问问题详解 #### 一、引言 在现代Web开发中,跨域访问问题是开发者经常面临的一个挑战。特别是在使用JavaScript进行前后端交互时,由于浏览器的同源策略限制,开发者经常会遇到跨域问题。本文将...

    HTML5平台中跨域访问使用说明

    在HTML5平台上,跨域访问是一个常见的挑战,尤其在进行多项目协作或者API集成时。跨域资源共享(CORS)是解决这个问题的关键技术。本文档将深入探讨如何在HTML5中实现跨域访问,帮助开发者避免修改大量代码,提高...

    remoting服务自动转变为webservice服务

    在ASP.NET中,可以通过配置Web.config或者使用过滤器来允许跨域请求。 6. **测试和调试**:使用工具如Postman或Web Service客户端测试你的新Web Service,确保其功能与原始的Remoting服务相同。 7. **更新客户端**...

    JS跨域访问解决

    JS跨域访问解决

    flex跨域访问问题

    然而,在Flex应用与不同源的服务器进行数据交互时,可能会遇到跨域访问的问题。跨域是Web浏览器的一个安全限制,它阻止了一个页面中的脚本直接访问另一个不同源的资源,除非目标服务器明确允许。 ### 跨域问题详解 ...

    ASP.NET后台代码实现XmlHttp跨域访问

    ### ASP.NET后台代码实现XmlHttp跨域访问 在Web开发领域,跨域访问是一个常见的问题。当客户端尝试从一个源加载不同源的数据时,就会触发跨域问题。为了解决这个问题,开发者通常会采用多种技术手段,其中一种是...

    tomcat6跨域访问配置及jar包

    配置tomcat6的跨域访问问题,包含两个xml配置文件clientaccesspolicy.xml,crossdomain.xml,以及两个jar包cors-filter-1.7.1.jar,java-property-utils-1.9.1.jar

Global site tag (gtag.js) - Google Analytics