This service is what is used to authenticate the device identity from a central credential store of registered devices. This service may be called with a shared device id/secret (like a user name and password), or may be called with a device ID and x509 certificate (if used for authenticating sessions with a client certificate)
/// Example Implementation
using SanteDB.Core.Security.Services;
/// Other usings here
public class MyDeviceIdentityProviderService : SanteDB.Core.Security.Services.IDeviceIdentityProviderService {
public String ServiceName => "My own IDeviceIdentityProviderService service";
/// <summary>
/// Fired after an authentication request has been made.
/// </summary>
public event EventHandler<AuthenticatedEventArgs> Authenticated;
/// <summary>
/// Fired prior to an authentication request being made.
/// </summary>
public event EventHandler<AuthenticatingEventArgs> Authenticating;
/// <summary>
/// Authenticates the specified device identifier.
/// </summary>
public IPrincipal Authenticate(String deviceName,String deviceSecret,AuthenticationMethod authMethod){
throw new System.NotImplementedException();
}
/// <summary>
/// Create a basic identity in the provider
/// </summary>
public IDeviceIdentity CreateIdentity(String deviceName,String secret,IPrincipal principal,Nullable<Guid> withSid){
throw new System.NotImplementedException();
}
/// <summary>
/// Gets the SID for the specified identity
/// </summary>
public Guid GetSid(String deviceName){
throw new System.NotImplementedException();
}
/// <summary>
/// Gets the specified identity for an device.
/// </summary>
public IDeviceIdentity GetIdentity(String deviceName){
throw new System.NotImplementedException();
}
/// <summary>
/// Gets the specified identity for an device.
/// </summary>
public IDeviceIdentity GetIdentity(Guid sid){
throw new System.NotImplementedException();
}
/// <summary>
/// Set the lockout status
/// </summary>
public void SetLockout(String deviceName,Boolean lockoutState,IPrincipal principal){
throw new System.NotImplementedException();
}
/// <summary>
/// Change the device secret
/// </summary>
public void ChangeSecret(String deviceName,String deviceSecret,IPrincipal principal){
throw new System.NotImplementedException();
}
/// <summary>
/// Add a to
/// </summary>
public void AddClaim(String deviceName,IClaim claim,IPrincipal principal,Nullable<TimeSpan> expiry){
throw new System.NotImplementedException();
}
/// <summary>
/// Get all active claims for the specified device
/// </summary>
public IEnumerable<IClaim> GetClaims(String deviceName){
throw new System.NotImplementedException();
}
/// <summary>
/// Removes a claim from the specified device account
/// </summary>
public void RemoveClaim(String deviceName,String claimType,IPrincipal principal){
throw new System.NotImplementedException();
}
}