Refactored Credential et al so that the security package is provided by name (string), and not an enum. Security packages are runtime enumerable, and new ones may be created that we don't have any idea of.
This commit is contained in:
@@ -9,7 +9,7 @@ namespace NSspi.Credentials
|
||||
{
|
||||
public class ClientCredential : Credential
|
||||
{
|
||||
public ClientCredential( SecurityPackage package )
|
||||
public ClientCredential( string package )
|
||||
: base( package )
|
||||
{
|
||||
Init();
|
||||
@@ -22,29 +22,14 @@ namespace NSspi.Credentials
|
||||
TimeStamp rawExpiry = new TimeStamp();
|
||||
|
||||
// -- Package --
|
||||
if( this.SecurityPackage == SecurityPackage.Kerberos )
|
||||
{
|
||||
packageName = PackageNames.Kerberos;
|
||||
}
|
||||
else if( this.SecurityPackage == SecurityPackage.Negotiate )
|
||||
{
|
||||
packageName = PackageNames.Negotiate;
|
||||
}
|
||||
else if( this.SecurityPackage == SecurityPackage.NTLM )
|
||||
{
|
||||
packageName = PackageNames.Ntlm;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException( "Invalid value provided for the 'package' parameter." );
|
||||
}
|
||||
// Copy off for the call, since this.SecurityPackage is a property.
|
||||
packageName = this.SecurityPackage;
|
||||
|
||||
// -- Credential --
|
||||
// Client uses outbound credentials.
|
||||
use = CredentialUse.Outbound;
|
||||
|
||||
// -- Invoke --
|
||||
|
||||
SecurityStatus status = SecurityStatus.InternalError;
|
||||
|
||||
this.Handle = new SafeCredentialHandle();
|
||||
|
||||
@@ -16,13 +16,13 @@ namespace NSspi.Credentials
|
||||
{
|
||||
private bool disposed;
|
||||
|
||||
private SecurityPackage securityPackage;
|
||||
private string securityPackage;
|
||||
|
||||
private SafeCredentialHandle safeCredHandle;
|
||||
|
||||
private DateTime expiry;
|
||||
|
||||
public Credential( SecurityPackage package )
|
||||
public Credential( string package )
|
||||
{
|
||||
this.disposed = false;
|
||||
this.securityPackage = package;
|
||||
@@ -35,7 +35,7 @@ namespace NSspi.Credentials
|
||||
Dispose( false );
|
||||
}
|
||||
|
||||
public SecurityPackage SecurityPackage
|
||||
public string SecurityPackage
|
||||
{
|
||||
get
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace NSspi.Credentials
|
||||
{
|
||||
public class ServerCredential : Credential
|
||||
{
|
||||
public ServerCredential( SecurityPackage package )
|
||||
public ServerCredential( string package )
|
||||
: base( package )
|
||||
{
|
||||
Init();
|
||||
@@ -22,22 +22,8 @@ namespace NSspi.Credentials
|
||||
TimeStamp rawExpiry = new TimeStamp();
|
||||
|
||||
// -- Package --
|
||||
if( this.SecurityPackage == SecurityPackage.Kerberos )
|
||||
{
|
||||
packageName = PackageNames.Kerberos;
|
||||
}
|
||||
else if( this.SecurityPackage == SecurityPackage.Negotiate )
|
||||
{
|
||||
packageName = PackageNames.Negotiate;
|
||||
}
|
||||
else if( this.SecurityPackage == SecurityPackage.NTLM )
|
||||
{
|
||||
packageName = PackageNames.Ntlm;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new ArgumentException( "Invalid value provided for the 'package' parameter." );
|
||||
}
|
||||
// Copy off for the call, since this.SecurityPackage is a property.
|
||||
packageName = this.SecurityPackage;
|
||||
|
||||
// -- Credential --
|
||||
// Server uses Inbound credentials.
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace NSspi
|
||||
|
||||
try
|
||||
{
|
||||
clientCred = new ClientCredential( SecurityPackage.Negotiate );
|
||||
clientCred = new ClientCredential( PackageNames.Negotiate );
|
||||
Console.Out.WriteLine( clientCred.Name );
|
||||
|
||||
client = new ClientContext(
|
||||
@@ -50,7 +50,7 @@ namespace NSspi
|
||||
ContextAttrib.Delegate
|
||||
);
|
||||
|
||||
serverCred = new ServerCredential( SecurityPackage.Negotiate );
|
||||
serverCred = new ServerCredential( PackageNames.Negotiate );
|
||||
|
||||
server = new ServerContext(
|
||||
serverCred,
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace TestClient
|
||||
this.FormClosing += Form1_FormClosing;
|
||||
|
||||
// --- SSPI ---
|
||||
this.cred = new ClientCredential( SecurityPackage.Negotiate );
|
||||
this.cred = new ClientCredential( PackageNames.Negotiate );
|
||||
|
||||
this.context = new ClientContext(
|
||||
cred,
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace TestServer
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.serverCred = new ServerCredential( SecurityPackage.Negotiate );
|
||||
this.serverCred = new ServerCredential( PackageNames.Negotiate );
|
||||
|
||||
this.serverContext = new ServerContext(
|
||||
serverCred,
|
||||
|
||||
Reference in New Issue
Block a user