2008-09-22 49 views
3

我们的CMS实现了自己的基于角色的内容管理访问控制,不像其他所有CMSs那样;)我最近一直在尝试实现将此访问控制扩展到我们的Web服务API中,并最终确定哪些用户可以访问哪些方法。基于自定义角色的Web服务访问

有没有人执行过这样的事情,或者知道我可能会研究的任何优秀资源,以便让它在上面滚动。

我们的发展是在.NET 2.0完全完成,但是如果在另一种语言中存在的原则,我欢迎它:)

回答

0

实施基于角色的安全性时,我发现您首先必须确定特定用户可能执行的操作。一旦你有了这些,你可以将它们绑在一起成为角色;并随意改变它们。

将每个Web方法调用视为需要一个或多个操作。每种方法都应该接受用户名/密码或令牌。该方法将对您的数据库或其他存储机制进行一次调用,以确定所标识的用户是否确实具有分配给他们的所需操作。然后,如果一切顺利,请执行该方法的其余部分。

实际上并不复杂而且非常灵活。

1

定制SOAP授权头可能是最标准的.NET 2.0的方式来做到这一点,请参阅专家交流this article,它给出了一个非常简单的实现。

基本上,您定义了一个SOAP标头,它在每次服务调用时都传递用户名和密码。该服务可以访问凭证,并可以进行任何需要的角色查找/授权检查,并返回相应的响应。用户名和密码可以来自Windows,或者可以在运行时从客户端的配置等插入。

0

对于我们的业务,我们实施了其他Web服务连接的安全Web服务,以验证调用它们的客户。它基于应用程序用户名,密码,认证码和访问级别。消费者提供除访问级别以外的所有信息。这是由自己调用的方法提供的。身份验证码是一个时间敏感的代码,由消费者计算并由安全服务进行验证,仅适用于时间窗口。一个自定义的SOAP Authorization Header可用于传递大量的这些信息,或者您可以在方法调用中传递它。

每个应用程序的访问权限可以按照每个方法设置用户,也可以设置为粒度较小的读/写/更新/删除/所有级别。

Web Site (App Username, Password, Authentication Code) ---> 
    Web Service (App Username, Password, Authentication Code, Access Level) --> 
     Security Web Service (Returns True/False) 

希望这有些道理!