コード例 #1
0
ファイル: autenticacion_ssl.php プロジェクト: siu-toba/rest
 public function get_usuario(request $request = null)
 {
     $cert_valido = isset($_SERVER['SSL_CLIENT_VERIFY']) && $_SERVER['SSL_CLIENT_VERIFY'] == 'SUCCESS';
     //Se presenta certif. y esta verificado
     $hay_serial = isset($_SERVER['SSL_CLIENT_M_SERIAL']);
     //Tiene serial el cert?
     $hay_CA = isset($_SERVER['SSL_CLIENT_I_DN']);
     $hay_vto = isset($_SERVER['SSL_CLIENT_V_END']);
     //Hay vencimiento?
     if (!$hay_serial || !$hay_vto || !$cert_valido || !$hay_CA) {
         return;
     }
     if ($_SERVER['SSL_CLIENT_V_REMAIN'] <= 0) {
         //Le quedan dias de validez al cert?
         return;
     }
     if (isset($_SERVER['SSL_CLIENT_S_DN_CN']) && trim($_SERVER['SSL_CLIENT_S_DN_CN']) != '') {
         //Busco el nombre del cliente
         $user = trim($_SERVER['SSL_CLIENT_S_DN_CN']);
         $cert = $_SERVER['SSL_CLIENT_CERT'];
         if ($this->es_valido($user, $cert)) {
             $usuario = new rest_usuario();
             $usuario->set_usuario($user);
             return $usuario;
         }
     }
     return;
     //anonimo
 }
コード例 #2
0
 public function get_usuario(request $request = null)
 {
     if (isset($_SERVER['PHP_AUTH_USER'])) {
         $password = isset($_SERVER['PHP_AUTH_PW']) ? $_SERVER['PHP_AUTH_PW'] : null;
         $user = $_SERVER['PHP_AUTH_USER'];
         //validar user password
         if ($this->validador_usuarios->es_valido($user, $password)) {
             $usuario = new rest_usuario();
             $usuario->set_usuario($user);
             return $usuario;
         }
     }
     return;
     //anonimo
 }
コード例 #3
0
 public function get_usuario(request $request = null)
 {
     if (isset($_SERVER['PHP_AUTH_DIGEST']) && ($data = $this->http_digest_parse($_SERVER['PHP_AUTH_DIGEST']))) {
         $user = $data['username'];
         $password_requerido = $this->passwords->get_password($user);
         if (null !== $password_requerido) {
             if ($this->validar_digest($data, $this->realm, $password_requerido)) {
                 $usuario = new rest_usuario();
                 $usuario->set_usuario($user);
                 return $usuario;
             }
         }
     }
     return;
     //anonimo
 }
コード例 #4
0
 public function get_usuario(request $request = null)
 {
     $api_key = $request->get('api_key', '');
     $username = $this->api_keys->get_usuario_api_key($api_key);
     if ($username !== null) {
         $usuario = new rest_usuario();
         $usuario->set_usuario($username);
         return $usuario;
     }
     if (isset($api_key)) {
         $this->mensaje = "No se encontro usuario para '?api_key={$api_key}'";
     } else {
         $this->mensaje = 'Debe proveer una api_key en la URL ?api_key=';
     }
     return;
     //anonimo
 }
コード例 #5
0
ファイル: autorizacion_scopes.php プロジェクト: emma5021/toba
 /**
  * @param rest_usuario $usuario
  * @param string       $ruta
  *
  * @return bool
  */
 public function tiene_acceso($usuario, $ruta)
 {
     if (null === $usuario) {
         return false;
     }
     // en el contexto de oauth2 los perfiles son los scopes
     $user_scopes = $usuario->get_perfiles();
     if (empty($user_scopes)) {
         $user_scopes = '';
     }
     // se chequea que todos los scopes requeridos estén en el arreglo de scopes del usuario
     $user_scopes_array = explode(' ', $user_scopes);
     foreach ($this->scopes as $required_scope) {
         if (!in_array($required_scope, $user_scopes_array)) {
             return false;
         }
     }
     return true;
 }
コード例 #6
0
 /**
  * Obtiene un usuario si está logueado o si lo puede obtener del request o cualquier otro medio.
  * Si el usuario es nulo, se puede llegar a llamar a requerir_autenticacion (si la operacion lo requiere).
  * En caso de errores, guardarlos y enviarlos en la respuesta.
  *
  * @param request $request
  *
  * @return rest_usuario el usuario logueado o null si es anonimo
  */
 public function get_usuario(request $request = null)
 {
     $auth_header = $request->headers('HTTP_AUTHORIZATION', null);
     if ($auth_header === null) {
         return;
     }
     $well_formed_header = preg_match('/Bearer (.+)/i', $auth_header, $result);
     if ($well_formed_header === 0 || $well_formed_header === false) {
         return;
     }
     $token = $result[1];
     $info = $this->decoder->decode($token);
     if ($info === null) {
         return;
     }
     $usuario = new rest_usuario();
     $usuario->set_usuario($info->get_user_id());
     $usuario->set_perfiles($info->get_scopes());
     return $usuario;
 }