DICOM Extended Negotiation of User Identity
DicomObjects.NET supports extended negotation of user identity as defined in DICOM supplement 99:
ftp://medical.nema.org/medical/dicom/final/sup99_ft.pdf
Here is sample code for how to access this data using DicomObjects.NET
SCU/Client
using DicomObjects.Enums;
DicomAssociation cn = new DicomAssociation();
cn.Identity = new DicomAssociation.UserIdentity();
cn.Identity.IdentityType = UserIdentityType.Kerberos;
cn.Identity.ResponseType = UserIdentityResponseType.PositiveResponseRequested;
cn.Identity.PrimaryField = new byte[] { 1, 2, 3, 4 }; // the Kerberos Service Ticket, or the username
cn.RequestedContexts.Add(...);
cn.Open(...);
byte[] resp = cn.ServerResponse; // will be null is ResponseType is set to NoResponseRequested
SCP/Server
using DicomObjects.Enums;
void server_AssociationRequest(object sender, DicomServer.AssociationRequestArgs e)
{
DicomAssociation.UserIdentity ident = e.Association.Identity;
//You can check the user identity and send a response back if Positive Response is requested
if (e.Association.Identity.ResponseType == UserIdentityResponseType.PositiveResponseRequested)
{
if (e.Association.Identity.IdentityType == DicomObjects.Enums.UserIdentityType.Kerberos)
e.Association.Identity.ServerResponse = new byte[] { 1, 1, 1, 1 }; // the Kerberos Server ticket
}
}