private void ParseAuthorizationHeaderValue(string headerValue)
 {
     try
     {
         this.AuthorizationMessage = AuthorizationMessageFactory.Build(headerValue);
         this.AuthorizationType    = this.AuthorizationMessage.AuthorizationType;
         if (this.AuthorizationMessage is BasicAuthorizationMessage)
         {
             this.UserName = ((BasicAuthorizationMessage)this.AuthorizationMessage).UserName;
         }
         else if (this.AuthorizationMessage is NtlmAuthorizeMessage)
         {
             this.SetNtlmValues(this.AuthorizationMessage as NtlmAuthorizeMessage);
         }
         else if (this.AuthorizationMessage is KerberosAuthorizeMessage)
         {
             this.SetKerberosValues(this.AuthorizationMessage as KerberosAuthorizeMessage);
         }
         else
         {
             this.ErrorMessage = "Unexpected authorization header";
         }
     }
     catch (Exception ex)
     {
         this.ErrorMessage = "Unexpected authorization header";
     }
 }
示例#2
0
    protected bool ValidateAuthorizationMessage(AuthorizationMessage message)
    {
        // validate that the connection is secure
        if (!Context.IsSecureConnection)
        {
            throw new CoflnetException("connection_insecure", "The connection is not secure, please try again with a secure connection.");
        }

        // validate that the device is local and the secrets match
        Device connectingDevice = DeviceController.instance.GetDevice(message.deviceId);

        if (connectingDevice == null || connectingDevice.Secret != message.deviceSecret)
        {
            throw new CoflnetException("device_secret_invalid", "The device doesn't exist on this server or the secrets don't match");
        }

        //

        return(true);
    }