<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>ControlSystemWorks Blog - security</title>
    <link>http://www.controlsystemworks.com/blog/</link>
    <description>Of CSWorks and software development</description>
    <language>en-us</language>
    <copyright>ControlSystemWorks.com</copyright>
    <lastBuildDate>Tue, 07 Sep 2010 18:06:29 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>support@ControlSystemWorks.net</managingEditor>
    <webMaster>support@ControlSystemWorks.net</webMaster>
    <item>
      <trackback:ping>http://www.controlsystemworks.com/blog/Trackback.aspx?guid=9f6e3505-4a6f-4595-baff-492621ec01cc</trackback:ping>
      <pingback:server>http://www.controlsystemworks.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.controlsystemworks.com/blog/PermaLink,guid,9f6e3505-4a6f-4595-baff-492621ec01cc.aspx</pingback:target>
      <dc:creator>Sergey Sorokin</dc:creator>
      <wfw:comment>http://www.controlsystemworks.com/blog/CommentView,guid,9f6e3505-4a6f-4595-baff-492621ec01cc.aspx</wfw:comment>
      <wfw:commentRss>http://www.controlsystemworks.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9f6e3505-4a6f-4595-baff-492621ec01cc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">CSWorks provides a mechanism to support
LiveData, Alarming and Historical data access authorization, but does not have access
rights management functionality. Companies that deploy web-based solutions usually
have some access management infrastructure in place, which is either based on Active
Directory or integrates with some third-party technologies. And in most cases, IT
managers in these companies do not like the idea of having yet another piece of security
infrastructure that can be used for SCADA-related authentication tasks only. It's
just too much hassle: extra support, one more set of user names and passwords to maintain,
extra security risks.<br /><br />
This is why we do not offer our own access right management subsystem with CSWorks
- we want to let IT managers choose the right one. We designed CSWorks in a way it
can be integrated with existing security solutions. It's up to the application developer
team how CSWorks-powered ASP.NET application authenticates a user and what screens
are available to the authenticated user. CSWorks can only enforce some restrictions
on data access when a CSWorks-powered client application accesses data - LiveData
Alarming, or Historical (see CSWorks documentation for details).<br /><br />
If you are new to the world of the web-based access rights management systems, you
probably need something to start with. I would recommend downloading a few products
available on the market and getting familiar with them. <a href="http://www.portsight.com/Products.aspx?AliasPath=Products/Secure%20Access/Features">PortSight
SecureAccess</a> and <a href="https://studio.plugins.atlassian.com/wiki/display/CNET/.NET+Authenticator+with+Single+Sign-On+Support">Atlassian
Crowd</a> are good candidates: they both support Active Directory integration, both
are .NET friendly, both are mature products, both provide samples for .NET developers.
If you decide to use such a product for your CSWorks solution, your application should
perform the following tasks.<br /><ol><li>
User authentication. Performed by the selected access right management solution either
through API or through a separate web page.</li><li>
CSWorks web service access authorization. Authorization information is stored in the
ASP.NET session state, see CSWorks documentation for details.</li><li>
ASP.NET page access authorization. Your ASP.NET application should provides access
only to the pages that are available to the authenticated user. This can be done by
using access right management solution API (direct .NET calls or web service-based).</li><li>
Silverlight page access authorization. Your Silverlight client application should
provides access only to the pages that are available to the authenticated user. This
can be done by a variety of methods: web service calls from the client applications
or passing startup parameters to the Silverlight engine when starting client application.</li></ol>
Of course, there is a learning curve involved in some cases. Yes, third-party (or
custom developed) software is involved. The benefits outweigh the risks though - customers
get a robust solution that works in a predictable way and re-uses existing security
infrastructure.<p></p><img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=9f6e3505-4a6f-4595-baff-492621ec01cc" /></body>
      <title>Security - access rights management</title>
      <guid isPermaLink="false">http://www.controlsystemworks.com/blog/PermaLink,guid,9f6e3505-4a6f-4595-baff-492621ec01cc.aspx</guid>
      <link>http://www.controlsystemworks.com/blog/2010/09/07/SecurityAccessRightsManagement.aspx</link>
      <pubDate>Tue, 07 Sep 2010 18:06:29 GMT</pubDate>
      <description>CSWorks provides a mechanism to support LiveData, Alarming and 
Historical data access authorization, but does not have access rights 
management functionality. Companies that deploy web-based solutions 
usually have some access management infrastructure in place, which is 
either based on Active Directory or integrates with some third-party 
technologies. And in most cases, IT managers in these companies do not 
like the idea of having yet another piece of security infrastructure 
that can be used for SCADA-related authentication tasks only. It's just 
too much hassle: extra support, one more set of user names and passwords
 to maintain, extra security risks.&lt;br&gt;
&lt;br&gt;
This is why we do not offer our own access right management subsystem with CSWorks
- we want to let IT managers choose the right one. We designed CSWorks in a way it
can be integrated with existing security solutions. It's up to the application developer
team how CSWorks-powered ASP.NET application authenticates a user and what screens
are available to the authenticated user. CSWorks can only enforce some restrictions
on data access when a CSWorks-powered client application accesses data - LiveData
Alarming, or Historical (see CSWorks documentation for details).&lt;br&gt;
&lt;br&gt;
If you are new to the world of the web-based access rights management systems, you
probably need something to start with. I would recommend downloading a few products
available on the market and getting familiar with them. &lt;a href="http://www.portsight.com/Products.aspx?AliasPath=Products/Secure%20Access/Features"&gt;PortSight
SecureAccess&lt;/a&gt; and &lt;a href="https://studio.plugins.atlassian.com/wiki/display/CNET/.NET+Authenticator+with+Single+Sign-On+Support"&gt;Atlassian
Crowd&lt;/a&gt; are good candidates: they both support Active Directory integration, both
are .NET friendly, both are mature products, both provide samples for .NET developers.
If you decide to use such a product for your CSWorks solution, your application should
perform the following tasks.&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
User authentication. Performed by the selected access right management solution either
through API or through a separate web page.&lt;/li&gt;
&lt;li&gt;
CSWorks web service access authorization. Authorization information is stored in the
ASP.NET session state, see CSWorks documentation for details.&lt;/li&gt;
&lt;li&gt;
ASP.NET page access authorization. Your ASP.NET application should provides access
only to the pages that are available to the authenticated user. This can be done by
using access right management solution API (direct .NET calls or web service-based).&lt;/li&gt;
&lt;li&gt;
Silverlight page access authorization. Your Silverlight client application should
provides access only to the pages that are available to the authenticated user. This
can be done by a variety of methods: web service calls from the client applications
or passing startup parameters to the Silverlight engine when starting client application.&lt;/li&gt;
&lt;/ol&gt;
Of course, there is a learning curve involved in some cases. Yes, third-party (or
custom developed) software is involved. The benefits outweigh the risks though - customers
get a robust solution that works in a predictable way and re-uses existing security
infrastructure.&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=9f6e3505-4a6f-4595-baff-492621ec01cc" /&gt;</description>
      <comments>http://www.controlsystemworks.com/blog/CommentView,guid,9f6e3505-4a6f-4595-baff-492621ec01cc.aspx</comments>
      <category>security</category>
      <category>third-party</category>
    </item>
    <item>
      <trackback:ping>http://www.controlsystemworks.com/blog/Trackback.aspx?guid=2baf405e-0bda-4684-b1d2-ff2fa01e1a44</trackback:ping>
      <pingback:server>http://www.controlsystemworks.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.controlsystemworks.com/blog/PermaLink,guid,2baf405e-0bda-4684-b1d2-ff2fa01e1a44.aspx</pingback:target>
      <dc:creator>Sergey Sorokin</dc:creator>
      <wfw:comment>http://www.controlsystemworks.com/blog/CommentView,guid,2baf405e-0bda-4684-b1d2-ff2fa01e1a44.aspx</wfw:comment>
      <wfw:commentRss>http://www.controlsystemworks.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2baf405e-0bda-4684-b1d2-ff2fa01e1a44</wfw:commentRss>
      <title>Running CSWorks demo applications from remote clients</title>
      <guid isPermaLink="false">http://www.controlsystemworks.com/blog/PermaLink,guid,2baf405e-0bda-4684-b1d2-ff2fa01e1a44.aspx</guid>
      <link>http://www.controlsystemworks.com/blog/2010/02/25/RunningCSWorksDemoApplicationsFromRemoteClients.aspx</link>
      <pubDate>Thu, 25 Feb 2010 00:24:27 GMT</pubDate>
      <description>&lt;p&gt;
One of the first things I would do after installing CSWorks is to open a browser on
another machine in the network and type in "http://MyTestBox/CSWorksDemo/PipesAndTanksDemo.html",
where MyTestBox is the name of the machine where I installed CSWorks.&lt;br&gt;
&lt;br&gt;
This doesn't work. And it's not supposed to work because of the cross-domain web service
call restrictions imposed by your browser. If you have a look at ServiceReferences.ClientConfig
file in the Pipes and Tanks Demo xap package (CSWorks.Client.PipesAndTanksDemo.xap
in your CSWorksDemo/ClientBin folder; don't worry it's just a ZIP file with XAP extension),
you will find endpoint description for LiveData web service calls that looks as follows:&lt;br&gt;
&lt;br&gt;
&lt;endpoint address="http://localhost/CSWorksDemo/LiveDataWebService/Service.asmx" ... /&gt;
&lt;br&gt;
&lt;br&gt;
In our case, when Silverlight is trying to make a web service call to http://localhost/CSWorksDemo/LiveDataWebService/Service.asmx,
the browser checks the URL of the application which happens to start with "http://MyTestBox".
Since it doesn't start with "http://localhost", the browser considers this a potential
security threat and blocks the call.&lt;br&gt;
&lt;br&gt;
To make things work, just replace "localhost" in the config file with the name (or
IP address) of your CSWorks server:&lt;br&gt;
&lt;br&gt;
&lt;endpoint address="http://MyTestBox/CSWorksDemo/LiveDataWebService/Service.asmx" ... /&gt;
&lt;br&gt;
&lt;br&gt;
and save updated config to the xap file. Now refresh the page in the browser on the
remote machine - Pipes and Tanks Demo should work fine.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update (June 25, 2010):&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
with Silverlight 4, you can use relative web service addresses, see &lt;a href="http://www.controlsystemworks.com/blog/2010/06/25/Silverlight4RelativeWebServiceAddressSupport.aspx"&gt;this
post&lt;/a&gt; for details.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=2baf405e-0bda-4684-b1d2-ff2fa01e1a44" /&gt;</description>
      <comments>http://www.controlsystemworks.com/blog/CommentView,guid,2baf405e-0bda-4684-b1d2-ff2fa01e1a44.aspx</comments>
      <category>demo</category>
      <category>security</category>
    </item>
    <item>
      <trackback:ping>http://www.controlsystemworks.com/blog/Trackback.aspx?guid=8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa</trackback:ping>
      <pingback:server>http://www.controlsystemworks.com/blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.controlsystemworks.com/blog/PermaLink,guid,8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa.aspx</pingback:target>
      <dc:creator>Sergey Sorokin</dc:creator>
      <wfw:commentRss>http://www.controlsystemworks.com/blog/SyndicationService.asmx/GetEntryCommentsRss?guid=8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
While working on one of my projects, I had to make WCF run over a farm of load-balanced
message queues. After several days of web search, asking questions and coding I have
come up with the following "Step-by step guide for setting up certificate security
for WCF over MSMQ communication". 
</p>
        <p>
The goal is to implement a secured WCF communication based on MSMQ under the following
requirements/assumptions/recommendations. 
</p>
        <ul>
          <li>
All MSMQ traffic must be encrypted and signed.</li>
          <li>
No involvement of Windows Domain security and Active Directory.</li>
          <li>
No code changes required on the client or on the server side.</li>
          <li>
MSMQ version 4.0 (W2K8) is used, but it would be nice to have a solution that works
on MSMQ 3.0 (W2K3) as well.</li>
          <li>
There must be a well-established and straightforward routine for setting up secured
communication that can be followed during test/staging/production deployment.</li>
        </ul>
        <p>
The weapon of choice is message-based certificate security. To put it simple, it means
two things: 
</p>
        <p>
        </p>
        <li>
all security-related activities happen on WCF level, MSMQ engine works only as a transport;</li>
        <li>
certificate keys are stored on client and server machines.</li>
        <p>
          <a href="http://www.controlsystemworks.com/articles/CertificateSecurityForWcfOverMsmq.html">Read
on...</a>
        </p>
        <img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa" />
      </body>
      <title>Certificate security for WCF over MSMQ communication</title>
      <guid isPermaLink="false">http://www.controlsystemworks.com/blog/PermaLink,guid,8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa.aspx</guid>
      <link>http://www.controlsystemworks.com/blog/2009/09/29/CertificateSecurityForWCFOverMSMQCommunication.aspx</link>
      <pubDate>Tue, 29 Sep 2009 04:52:32 GMT</pubDate>
      <description>&lt;p&gt;
While working on one of my projects, I had to make WCF run over a farm of load-balanced
message queues. After several days of web search, asking questions and coding I have
come up with the following "Step-by step guide for setting up certificate security
for WCF over MSMQ communication". 
&lt;/p&gt;
&lt;p&gt;
The goal is to implement a secured WCF communication based on MSMQ under the following
requirements/assumptions/recommendations. 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
All MSMQ traffic must be encrypted and signed.&lt;/li&gt;
&lt;li&gt;
No involvement of Windows Domain security and Active Directory.&lt;/li&gt;
&lt;li&gt;
No code changes required on the client or on the server side.&lt;/li&gt;
&lt;li&gt;
MSMQ version 4.0 (W2K8) is used, but it would be nice to have a solution that works
on MSMQ 3.0 (W2K3) as well.&lt;/li&gt;
&lt;li&gt;
There must be a well-established and straightforward routine for setting up secured
communication that can be followed during test/staging/production deployment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The weapon of choice is message-based certificate security. To put it simple, it means
two things: 
&lt;p&gt;
&lt;li&gt;
all security-related activities happen on WCF level, MSMQ engine works only as a transport;&lt;/li&gt;
&lt;li&gt;
certificate keys are stored on client and server machines.&lt;/li&gt;
&lt;p&gt;
&lt;a href="http://www.controlsystemworks.com/articles/CertificateSecurityForWcfOverMsmq.html"&gt;Read
on...&lt;/a&gt; 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.controlsystemworks.com/blog/aggbug.ashx?id=8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa" /&gt;</description>
      <comments>http://www.controlsystemworks.com/blog/CommentView,guid,8ebcd9ee-d6b3-48a2-9a0c-789bada4a4fa.aspx</comments>
      <category>msmq</category>
      <category>security</category>
      <category>wcf</category>
    </item>
  </channel>
</rss>