我正在处理通过Windows服务托管的WCF服务。我已经添加了自定义授权管理器和授权策略,并且我已经看到授权策略的Evaluate()方法实际上是在授权管理器的CheckAccessCore()之后调用的:不应该相反吗?
我一直在谷歌搜索并找到了一些提示,但对我没有用 (例如:link)
以下是app.config的剪辑:
<userNameAuthentication userNamePasswordValidationMode="Custom"
customUserNamePasswordValidatorType="Reply.Platform.IoTAccessControlLibrary.IoTPwdValidator, Reply.Platform.IoTAccessControlLibrary" />
</serviceCredentials>
<serviceAuthorization serviceAuthorizationManagerType="Reply.Platform.IoTAccessControlLibrary.IoTServiceAuthorizationManager, Reply.Platform.IoTAccessControlLibrary">
<authorizationPolicies>
<add policyType="Reply.Platform.IoTAccessControlLibrary.IoTAuthorizationPolicy, Reply.Platform.IoTAccessControlLibrary" />
</authorizationPolicies>
</serviceAuthorization>
有人可以帮助我吗?
此致
Gianpaolo
答案 0 :(得分:1)
它完全符合预期。它归结为这个简单的等式 - 如果不应该授予访问权限,那么就不需要检查访问是否应该被授权。对于您在此处提供的示例,您首先要验证用户名/密码对的正确组合,然后检查他们是否有权访问系统。在检查他们是否有权访问系统之后,您可以根据定义的策略评估他们是否获得授权。
考虑这个基本的例子:
1)用户名和密码是否与已知用户匹配?是。 (服务凭证)
2)系统上是否已启用该已知用户?是。 (服务授权)
3)该已知用户是否具有“X”的角色?是。 (IAuthorizationPolicy)
因此由WCF定义的工作流程。