社区
C#
帖子详情
remoting中怎么对客户端进行身份验证?
oldhunter
2006-05-13 07:41:18
remoting中怎么对客户端进行身份验证? 网上竟然找不到一篇详细的文章,都是一笔概过.
用TcpChannel通道,我的理解是:
让用户提交用户名和密码,如果正确,把用户信息绑定到当前线程:Thread.CurrentPrincipal.然后在每个远程对象的方法或属性开头都进行验证该用户是不是合法的(通过数据库或文件保存合法用户信息). 是不是这样?
那用CallContext绑定用户信息也可以吧?
标准做法是怎么样的?
...全文
708
20
打赏
收藏
remoting中怎么对客户端进行身份验证?
remoting中怎么对客户端进行身份验证? 网上竟然找不到一篇详细的文章,都是一笔概过. 用TcpChannel通道,我的理解是: 让用户提交用户名和密码,如果正确,把用户信息绑定到当前线程:Thread.CurrentPrincipal.然后在每个远程对象的方法或属性开头都进行验证该用户是不是合法的(通过数据库或文件保存合法用户信息). 是不是这样? 那用CallContext绑定用户信息也可以吧? 标准做法是怎么样的?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fengfangfang
2006-06-14
打赏
举报
回复
MSDN 2003中有两篇文章
.NET Remoting Security Solution, Part 1:
.NET Remoting Security Solution, Part 2:
fengfangfang
2006-06-14
打赏
举报
回复
.NET 远程处理在默认情况下不进行身份验证或加密。因此,建议您在与客户端或服务器进行远程交互之前,采取任何必要的措施确认它们的身份。因为 .NET 远程处理应用程序需要 FullTrust 权限才能执行,所以未经授权的客户端如果被授予了访问您的服务器的权限,该客户端就可能像完全受信任的客户端一样执行代码。应始终验证终结点的身份并将通信流加密,通过在 Internet 信息服务 (IIS) 中承载远程类型,或者通过生成自定义通道接收对来完成这项工作。
DragonCity1
2006-06-14
打赏
举报
回复
Mark
liuqian0415
2006-06-11
打赏
举报
回复
up
levinknight
2006-06-09
打赏
举报
回复
不要在每个方法里都加验证
yanzimywife_2005
2006-06-08
打赏
举报
回复
mark!
SaSBYa
2006-06-08
打赏
举报
回复
自定义sink不是一种好的方法,似乎在下一代系统中,这些东西都会被取代.
qiushikong
2006-06-08
打赏
举报
回复
自定义sink
oldhunter
2006-06-07
打赏
举报
回复
http://community.csdn.net/Expert/topic/4807/4807760.xml?temp=.8147241
xxqq0824
2006-05-29
打赏
举报
回复
mark
oldhunter
2006-05-27
打赏
举报
回复
up
antoniusguo
2006-05-26
打赏
举报
回复
mark
levinknight
2006-05-25
打赏
举报
回复
mark
oldhunter
2006-05-23
打赏
举报
回复
服务器端:
namespace RemoteServer
{
public class Scoop : MarshalByRefObject
{
public Scoop()
{
}
public string GetTheScoop(string name)
{
return "Here's the scoop, "
+ Thread.CurrentPrincipal.Identity.Name + "!";
}
}
}
配制文件:
<configuration>
<system.runtime.remoting>
<application>
<service>
<wellknown mode="SingleCall"
type="RemoteServer.Scoop,RemoteServer"
objectUri="Scoop.soap" />
</service>
</application>
</system.runtime.remoting>
<system.web>
<authentication mode="None" />
<authorization>
<deny users="?" />
</authorization>
</system.web></configuration>
客户端:
static void Main(string[] args)
{
ChannelServices.RegisterChannel(new HttpClientChannel());
RemotingConfiguration.RegisterWellKnownClientType(
typeof(RemoteServer.Scoop),
"http://localhost/ScoopRemoting/Scoop.soap");
Scoop srv = new Scoop();
IDictionary props = ChannelServices.GetChannelSinkProperties(srv);
props["username"] = "test";
props["password"] = "test";
string s = srv.GetTheScoop("Greg");
Console.WriteLine(s);
}
如果这样做的话,别人写个客户端不是可以随便模仿一下登录?
如果限制角色:
<authorization>
<allow role="aaaa" />
<deny users="*" />
</authorization>
别人如果知道你的角色是什么, 也可以写个客户端模仿吧?
Brunhild
2006-05-23
打赏
举报
回复
mark
Koala_sea
2006-05-23
打赏
举报
回复
UP
oldhunter
2006-05-17
打赏
举报
回复
up
oldhunter
2006-05-13
打赏
举报
回复
那用CallContext绑定用户信息也可以吧?
"在每个远程对象的方法或属性开头都进行验证" 是不是有点麻烦? 能不能把某个类限定给指定角色? 用什么特性.
这里的Facade也是远程的吗? 本地是不是不安全?
cll0320
2006-05-13
打赏
举报
回复
"在每个远程对象的方法或属性开头都进行验证"
这个是可以的。
但要记住远程对象和一般的本地对象不一样。
通常远程访问可以用Facade模式来实现,这样只需要在Facade对象中验证就可以。
对本地的业务对象没有影响。
oldhunter
2006-05-13
打赏
举报
回复
"在每个远程对象的方法或属性开头都进行验证" 是不是有点麻烦?
经典.NET笔试题 pdf版本
19.ASP.net的
身份验证
方式有哪些?分别是什么原理? 答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥) 20.什么是Code-Behind技术? 答:代码后植。 21.在.net
中
,配件的意思是? 答:程序集。...
net学习笔记及其他代码应用
19.ASP.net的
身份验证
方式有哪些?分别是什么原理? 答:10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥) 20.什么是Code-Behind技术? 答:代码后植。 21.在.net
中
,配件的意思是? 答:程序集。...
asp.net知识库
利用反射实现ASP.NET控件和数据实体之间的双向绑定,并且在
客户端
自动验证输入的内容是否合法 asp.net报表解决方法 SQLDMO类的使用 SQL过程自动C#封装,支持从表到基本存储过程生成 使用SQLDMO控制 SQL Server 使用SQL...
spring security 参考手册
中
文版
9.4 Web应用程序
中
的
身份验证
81 9.4.1 ExceptionTranslationFilter 82 9.4.2 AuthenticationEntryPoint 82 9.4.3认证机制 82 9.4.4在请求之间存储SecurityContext 83 9.5 Spring Security
中
的访问控制(授权) 84 ...
asp.net面试题
11.ASP.net的
身份验证
方式有哪些?分别是什么原理? 答:form认证,windows集成认证等,原理不清楚. 12.进程和线程分别怎么理解? 答:进程是老子,线程是儿子,没有老子就没有儿子,一个老子可以有多个儿子.一个儿子...
C#
110,577
社区成员
642,558
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章