Hem*_*ant 4 windows authentication wcf
我有一个WCF服务,它使用netTcp绑定和传输安全性.它使用Windows身份验证(默认).
一切顺利,但我想确保只有一个选择的Windows用户帐户可以使用此服务而不是域中的每个人.
有没有办法实现这一点,以便选择用户帐户可以写在配置文件中,服务将使用它们(使用属性排除)?
您无法在配置中执行此操作 - 但由于您使用的是Windows身份验证,因此可以轻松使用ASP.NET角色提供程序 - 基于Active Directory/Windows域角色成员身份,或基于ASP.NET内置角色/会员数据库.
有了这个,您可以使用声明性语法将调用者限制为某些组:
[ServiceContract]
interface IMyService
{
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Role="YourCustomRole")]
public string MethodLimitedToGroup(string someInput);
}
Run Code Online (Sandbox Code Playgroud)
任何不是您指定的组成员并尝试调用此方法的人都将收到SecurityException - 但没有其他任何内容.
您也可以限制一组特定的实际用户名 - 不建议使用 - 一般来说太复杂,限制太多:
[ServiceContract]
interface IMyService
{
[OperationContract]
[PrincipalPermission(SecurityAction.Demand, Name="User1")]
[PrincipalPermission(SecurityAction.Demand, Name="User2")]
public string MethodLimitedToGroup(string someInput);
}
Run Code Online (Sandbox Code Playgroud)
您可以在config中定义所有这些:
<behaviors>
<serviceBehavior>
<behavior name="WinAuth">
<serviceAuthorization principalPermissionMode="Windows" />
</behavior>
</serviceBehavior>
</behaviors>
Run Code Online (Sandbox Code Playgroud)
然后只需在配置中将该服务行为分配给您的服务:
<service name="YourService" behaviorConfiguration="WinAuth"> ......
Run Code Online (Sandbox Code Playgroud)
如果要使用ASP.NET提供的成员资格/角色数据库,请指定
<serviceAuthorization principalPermissionMode="UseAspNetRoles" />
Run Code Online (Sandbox Code Playgroud)
代替.
渣
| 归档时间: |
|
| 查看次数: |
1462 次 |
| 最近记录: |