WCF服务身份验证+ Sitecore

伊万·L

我们目前正在Sitecore中实施WCF服务以执行某些任务。但是,我们希望保护和验证这些交互,以保持Sitecore安全模型的完整性。

我们使用以下配置进行身份验证(仅相关配置和匿名化):

<service name="Services.MailService" behaviorConfiguration="serviceBehavior">
    <endpoint address="" binding="wsHttpBinding" contract="Interfaces.IMailService"/>
</service>
<behavior name="serviceBehavior">
    <serviceCredentials>
        <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="Services.Authentication.CustomServiceAuthentication, MyLibrary" />
    </serviceCredentials>
</behavior>
<wsHttpBinding>
    <binding>
        <security mode="TransportWithMessageCredential">
            <message clientCredentialType="UserName" />
            <transport clientCredentialType="None">
            </transport>
        </security>
    </binding>
</wsHttpBinding>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"/>

定制验证器从UserNamePasswordValidator继承,并使用标准Sitecore.Security.Authentication.AuthenticationManager.Login()方法登录用户。在此确切时刻,用户确实已登录,并显示为Sitecore.Context.User。但是当到达WCF方法本身时,此身份验证就消失了。(由于匿名用户而导致来自Sitecore的访问异常没有添加项权限)

经过一些测试并研究了交互之后,我注意到问题是WCF使用了多个消息,因此使用了多个HttpContext。Cookie和登录名不会在请求之间保留。更深入地看,我注意到System.ServiceModel.ServiceSecurityContext.Current确实保留了安全性登录名,但是只有在输入WCF方法后才会显示(如果无法在Sitecore httpBeginRequest管道中使用此方法来在UserResolver上标识和登录用户, )

如何确保整个调用过程中对asp.net和wcf都进行了正确的身份验证?

伊万·L

最后,由于我们将InstanceContextMode设置为PerCall,因此通过在服务的构造函数中包含以下内容来解决此问题:

// Handle login for Sitecore to sync with the WCF security context
if (ServiceSecurityContext.Current != null)
{
    AuthenticationManager.Login(
    string.Format("{0}\\{1}", "yoursitecoredomain", ServiceSecurityContext.Current.PrimaryIdentity.Name));
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Sitecore WFFM SendEmailMessage SMTP密码身份验证错误

来自分类Dev

Sitecore-Web Api用户身份验证

来自分类Dev

Sitecore WFFM SendEmailMessage SMTP密码身份验证错误

来自分类Dev

Sitecore RESTful API 身份验证不返回令牌

来自分类Dev

Sitecore 与 iis 表单身份验证和编码基本身份验证

来自分类Dev

Sitecore 7.2-项目Web API-用户身份验证

来自分类Dev

具有LDAP的Sitecore-以编程方式进行身份验证

来自分类Dev

Sitecore富文本验证

来自分类Dev

WCF服务调用返回“ 407必需的代理身份验证”

来自分类Dev

如何使用AWS身份验证保护我的WCF服务

来自分类Dev

使用Kerberos身份验证的WCF自托管Web服务

来自分类Dev

WCF服务的安全设置需要匿名身份验证

来自分类Dev

处理调用内部WCF服务的外部WCF服务(身份验证-会话)

来自分类Dev

匿名身份验证不适用于WCF服务:“ .....从服务器收到的身份验证标头为”“

来自分类Dev

Sitecore Services客户端vs Sitecore Web服务vs Sitecore Item Web API

来自分类Dev

WCF用户身份验证和授权

来自分类Dev

WCF的身份验证问题-IP与FQDN

来自分类Dev

WCF与Windows身份验证问题

来自分类Dev

WCF禁用匿名身份验证

来自分类Dev

WCF-添加身份验证层

来自分类Dev

如何在WCF服务中为自定义绑定配置Windows身份验证?

来自分类Dev

我的UWP应用如何通过WCF服务进行身份验证?

来自分类Dev

通过浏览器的WCF Rest服务Windows身份验证

来自分类Dev

使用Windows服务上托管的WCF对ADFS进行身份验证

来自分类Dev

为简单的WCF服务打开基本身份验证吗?

来自分类Dev

具有SSL以及用户名和密码身份验证的自托管WCF服务

来自分类Dev

如何对自托管WCF OData服务使用身份验证

来自分类Dev

使用表单身份验证调用WCF服务时避免重定向

来自分类Dev

在IIS上对WCF服务进行身份验证时,仅首次调用AuthenticateRequest

Related 相关文章

  1. 1

    Sitecore WFFM SendEmailMessage SMTP密码身份验证错误

  2. 2

    Sitecore-Web Api用户身份验证

  3. 3

    Sitecore WFFM SendEmailMessage SMTP密码身份验证错误

  4. 4

    Sitecore RESTful API 身份验证不返回令牌

  5. 5

    Sitecore 与 iis 表单身份验证和编码基本身份验证

  6. 6

    Sitecore 7.2-项目Web API-用户身份验证

  7. 7

    具有LDAP的Sitecore-以编程方式进行身份验证

  8. 8

    Sitecore富文本验证

  9. 9

    WCF服务调用返回“ 407必需的代理身份验证”

  10. 10

    如何使用AWS身份验证保护我的WCF服务

  11. 11

    使用Kerberos身份验证的WCF自托管Web服务

  12. 12

    WCF服务的安全设置需要匿名身份验证

  13. 13

    处理调用内部WCF服务的外部WCF服务(身份验证-会话)

  14. 14

    匿名身份验证不适用于WCF服务:“ .....从服务器收到的身份验证标头为”“

  15. 15

    Sitecore Services客户端vs Sitecore Web服务vs Sitecore Item Web API

  16. 16

    WCF用户身份验证和授权

  17. 17

    WCF的身份验证问题-IP与FQDN

  18. 18

    WCF与Windows身份验证问题

  19. 19

    WCF禁用匿名身份验证

  20. 20

    WCF-添加身份验证层

  21. 21

    如何在WCF服务中为自定义绑定配置Windows身份验证?

  22. 22

    我的UWP应用如何通过WCF服务进行身份验证?

  23. 23

    通过浏览器的WCF Rest服务Windows身份验证

  24. 24

    使用Windows服务上托管的WCF对ADFS进行身份验证

  25. 25

    为简单的WCF服务打开基本身份验证吗?

  26. 26

    具有SSL以及用户名和密码身份验证的自托管WCF服务

  27. 27

    如何对自托管WCF OData服务使用身份验证

  28. 28

    使用表单身份验证调用WCF服务时避免重定向

  29. 29

    在IIS上对WCF服务进行身份验证时,仅首次调用AuthenticateRequest

热门标签

归档