From d298df9108bb3448604ad91e54394e344ee98cfb Mon Sep 17 00:00:00 2001 From: Martin Regen Date: Thu, 17 Aug 2017 18:34:15 +0200 Subject: [PATCH] add user token, shutdown delay from ref server --- .../Samples/GDS/ApplicationsNodeManager.cs | 40 ++++++++++++++++-- .../GDS/GlobalDiscoveryServerServer.cs | Bin 17876 -> 28450 bytes .../Opc.Ua.GlobalDiscoveryServer.Config.xml | 6 +++ 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/SampleApplications/Samples/GDS/ApplicationsNodeManager.cs b/SampleApplications/Samples/GDS/ApplicationsNodeManager.cs index 47be1e1428..cf54f0b5a7 100644 --- a/SampleApplications/Samples/GDS/ApplicationsNodeManager.cs +++ b/SampleApplications/Samples/GDS/ApplicationsNodeManager.cs @@ -47,6 +47,7 @@ namespace Opc.Ua.GdsServer { private NodeId DefaultApplicationGroupId; private NodeId DefaultHttpsGroupId; + private NodeId DefaultUserTokenGroupId; // placeholder until password support is implemented private string m_nullPassword = null; @@ -83,7 +84,8 @@ namespace Opc.Ua.GdsServer } DefaultApplicationGroupId = ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultApplicationGroup, Server.NamespaceUris); - DefaultHttpsGroupId = ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultHttpsGroup, Server.NamespaceUris); + DefaultHttpsGroupId = ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultHttpsGroup, Server.NamespaceUris); + DefaultUserTokenGroupId = ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultUserTokenGroup, Server.NamespaceUris); m_database = new ApplicationsDatabase(); m_certificateGroups = new Dictionary(); @@ -304,6 +306,13 @@ namespace Opc.Ua.GdsServer certificateGroup.DefaultTrustList = (TrustListState)FindPredefinedNode(ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultHttpsGroup_TrustList, Server.NamespaceUris), typeof(TrustListState)); } + if (certificateGroupConfiguration.Id.Contains("UserToken")) + { + certificateGroup.Id = DefaultUserTokenGroupId; + certificateGroup.CertificateType = null; + certificateGroup.DefaultTrustList = (TrustListState)FindPredefinedNode(ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultUserTokenGroup_TrustList, Server.NamespaceUris), typeof(TrustListState)); + } + certificateGroup.DefaultTrustList.Handle = new TrustList(certificateGroup.DefaultTrustList, certificateGroupConfiguration.TrustedListPath, certificateGroupConfiguration.IssuerListPath); break; } @@ -357,6 +366,11 @@ namespace Opc.Ua.GdsServer certificateGroup.CertificateType = Opc.Ua.ObjectTypeIds.HttpsCertificateType; certificateGroup.DefaultTrustList = (TrustListState)FindPredefinedNode(ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.CertificateDirectoryType_CertificateGroups_DefaultHttpsGroup_TrustList, Server.NamespaceUris), typeof(TrustListState)); } + else if (certificateGroupConfiguration.Id == "UserToken") + { + certificateGroup.Id = ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.Directory_CertificateGroups_DefaultUserTokenGroup, Server.NamespaceUris); + certificateGroup.DefaultTrustList = (TrustListState)FindPredefinedNode(ExpandedNodeId.ToNodeId(Opc.Ua.Gds.ObjectIds.CertificateDirectoryType_CertificateGroups_DefaultUserTokenGroup_TrustList, Server.NamespaceUris), typeof(TrustListState)); + } else { certificateGroup.Id = new NodeId(certificateGroupConfiguration.Id, NamespaceIndex); @@ -937,6 +951,11 @@ namespace Opc.Ua.GdsServer throw new ServiceResultException(StatusCodes.BadInvalidArgument, "Cannot issue HTTPS certificates to server applications without a HTTPS discovery URL."); } + private string GetDefaultUserToken() + { + return "USER"; + } + private string GetSubjectName(ApplicationRecordDataType application, CertificateGroup certificateGroup, string subjectName) { bool contextFound = false; @@ -1074,11 +1093,14 @@ namespace Opc.Ua.GdsServer { buffer.Append(application.ApplicationNames[0]); } - else if (certificateGroup.Id == DefaultHttpsGroupId) { buffer.Append(GetDefaultHttpsDomain(application)); } + else if (certificateGroup.Id == DefaultUserTokenGroupId) + { + buffer.Append(GetDefaultUserToken()); + } if (!String.IsNullOrEmpty(m_configuration.DefaultSubjectNameContext)) { @@ -1294,13 +1316,23 @@ namespace Opc.Ua.GdsServer { certificateGroupIds = new NodeId[] { - DefaultApplicationGroupId + DefaultApplicationGroupId, + DefaultUserTokenGroupId + }; + } + else if (application.ApplicationType == ApplicationType.ClientAndServer) + { + certificateGroupIds = new NodeId[] + { + DefaultApplicationGroupId, + DefaultHttpsGroupId, + DefaultUserTokenGroupId }; } else { certificateGroupIds = new NodeId[] - { + { DefaultApplicationGroupId, DefaultHttpsGroupId }; diff --git a/SampleApplications/Samples/GDS/GlobalDiscoveryServerServer.cs b/SampleApplications/Samples/GDS/GlobalDiscoveryServerServer.cs index b896aaf67b65dfb4fe8ae8393ee9968af5008140..1c623cc341c4d086a14328fbe37350e729b79281 100644 GIT binary patch delta 4826 zcmc&&OHfl+7(PttPysOk6(I&Lkw^k0Bvu4O9tEvs6vrB|o#{AE2d5Dz&S2 z>^PNw*XaXYxabPUZ5MXeO|5pi>88V?>rT6=n@;WbopUcqFac~A9VX=5d;ar3zyERa z)6Js0zZ5OsD=X@jkIUYY&&n!}#niYORhQMAno{#Bt-@*$>$IB1Q<09mo2D-g#TK ztBC3X#W>#25(P(EA^-FG=a|?J_(2z2OmCN(f8mRymlsmh@m>F4SRppO5lnDOfCjx0FBlarZZV`K@ugJnZthui5yqAeMsW zXDoMQK|IR zQT=mgC`+R?twxMwbsDr6@jg)i%>hS~EK24EIjupyeA^PD(J_KPseyhF+Dt)`rJ>6c z7IfqrX3Ch}P2hhV>lwV~+S%{J+9VI&%8h2fcIe6N#akRZX}~zxr!e zy%p;XmXR~1zo(*-?(O!rV(oY*tSyQ`27QuHlXBndm8E9aVt>Nxgec>lpjtgF_j_Ap zxv_k)uTFz)d0*{fXQ!9WkAo2fUPeA!>O9^|z!gBXoZVTygSayICyiYRNS@D<3 zN?k+_`2+r}Q=lTpG`^ja&Z!?>ttm;utteXZhsOgB<#OG%TUI*DWp;l=u2i|olF(w- zHtv$U<7Jwf&dvvo&&OSr4F>B8=sUU^no%7JLSr5|fB*~)spEF=4(U3Sf>x$(^g=^Z zKAFKhfkL>tOKX|k3@3vhmZvq|qOjc9;jIa)qoAE%!!M-*8cvS_r6CsO{9FmdBz#SI zmZA<3xl~)tAR;mLFU;ax618#)zGh;i@WlE`O{VOXiH`#{TEVPe#}oQ=6937QcG6>+ z^I36n=|WGj^9UnIO(B7DpIhZpTdnZ{piO;a|W zUccFOYdIV7>7_amwHe}&3hCVay?K}1iXL!)I+@Rf8E|BEX_WKz%yBZl0F?%eD^x3A zTBS_Qg?w_?0%kMPp9j+hn!sCIRjE|_Y9vda{~t}DS;TKI4k!Y)?)y!-JtQ5RbB1k zYHB}*G5aeHn9jPLPaEJLS05YG%kQ#i-&#LmPL&3>C1R&odX)p1SJJ7beG z;FzQ{NjZj|9-qocd699;9s`lqc}6U?FQ0a@E#Q&sR$Xp?Z_3ZXv>0|o+6y1cn@v^K z0mLMaJZGefX1d*+J*csZ(m#v|C+!KeAx;B~BVysq%nRosg9DrK6U#SgV;M^9u&|Fn z8|E+DAWPZ|P{p!1j?!laMm?nIGDZ|I-X}o8eqKO(B6L3voLBFHh;5qXD6gR)9fIf- zsNsejv)SqiO#=?rOJ3kIW^``Io}jU$1;GV`Z1=RfTV>Nyote3VAzcgJ3}7bmkF z@&@_H7yUJ!Q!u)KxpKR^MP`Goa;tSf0-?HSegK%s|Ae;aHCSWpp*v0LGF7wEwM?fg z^a-dV;%=>y%E0T=+8nTN6{XS~s&t!+8@*>PRXySlHOPmN+HIU#9Pevb;BvI&cFEVR zjhIsi9TR?j)5fn_+noCf?>gOvqCrC>q4^U^#zWl8Ez<;!8TEQFAwh?>7xY2a_!ySs z&C^Xoh`qTYGG+2}!{mkWxI-#h4i7ist`Sl1t0rj42%7<(>uf&RrNlu?Zn5FiMy~Dt zLi@37WV6@fN>W^wCk9({Y|xEP$G6$FdPTl{AZA}zKcUqvBhWUdplxhwzk zc6o$X?2N#wkbSoOO@;Pz>|e!hg}!BT(#>4IKSD+<(mPum@6fX$H)F#2D6EbFNonox zkn~!u)%=l!4Tvp;bz?-gAbm>4!Y7?upFBM5lJ5rYf_H^PBDEc6P8$Wa`Q?aN#h+VP zS+0WL9G;1H7Cax;oZphlCr=u^GCSaU@aN!i5t+7ShPCy_Fq1qH1hrc39SQ#fwpki1 delta 115 zcmZ2eQpAi9h9UdZ^+&>Nti`5gu$P| z1&FN}6d1}FQW=UEG8xhsDuKKLhD3&9AS`Fd2a2XlZj_Oo{KuPzQ-Prb$S-9`-Fz_T OF5~2PIU 0 + + + + Global Discovery Server Profile + +