2016-07-18 5 views
0

Может ли кто-нибудь помочь мне, потому что я действительно не понимаю с CAS (новичком). У меня есть URL-адрес http://localhost/program/phpcas/CodeIgniter-3.0.6/, если есть доступ к этому URL-адресу, необходимо перенаправить/использовать SSO CAS в http://localhost:8080/cas.CAS 4.0 Управление услугами Веб-приложение - приложение, не разрешенное для использования CAS

Но у меня есть проблемы, если я доступ http://localhost/program/phpcas/CodeIgniter-3.0.6/ я получил сообщение об ошибке сообщение от КАС:

Применение не разрешается использовать CAS

Приложение, которое вы пытались проверить подлинность не авторизован использовать CAS.

Вот CAS код:

ServiceManagementWebApplication-52497044623301.json

{ 
    "@class" : "org.jasig.cas.services.RegexRegisteredService", 
    "serviceId" : "^http://localhost/program/phpcas/CodeIgniter-3.0.6/", 
    "name" : "Services Management Web Application", 
    "id" : 52497044623301, 
    "description" : "Services Management Web Application", 
} 

propertyFileConfigurer.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xmlns:util="http://www.springframework.org/schema/util" 
     xmlns="http://www.springframework.org/schema/beans" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd"> 
    <description> 
     This file lets CAS know where you've stored the cas.properties file which details some of the configuration 
     options 
     that are specific to your environment. You can specify the location of the file here. You may wish to place the 
     file outside 
     of the Servlet context if you have options that are specific to a tier (i.e. test vs. production) so that the 
     WAR file 
     can be moved between tiers without modification. 
    </description> 

    <util:properties id="casProperties" location="${cas.properties.config.location:/WEB-INF/cas.properties}"/> 

    <context:property-placeholder properties-ref="casProperties"/> 

</beans> 

Вот PHPCAS используя CI3 для этого URL:

конфигурации/cas.php

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
$config['cas_server_url'] = 'http://localhost:8080/cas'; 
$config['phpcas_path'] = 'application/libraries/phpcas/source'; 
$config['cas_disable_server_validation'] = TRUE; 

библиотеки/cas.php

<?php 
if (! defined('BASEPATH')) exit('No direct script access allowed'); 

function cas_show_config_error(){ 
    show_error("CAS authentication is not properly configured.<br /><br /> 
    Please, check your configuration for the following file: 
    <code>config/cas.php</code> 
    The minimum configuration requires: 
    <ul> 
     <li><em>cas_server_url</em>: the <strong>URL</strong> of your CAS server</li> 
     <li><em>phpcas_path</em>: path to a installation of 
      <a href=\"https://wiki.jasig.org/display/CASC/phpCAS\">phpCAS library</a></li> 
     <li>and one of <em>cas_disable_server_validation</em> and <em>cas_ca_cert_file</em>.</li> 
    </ul> 
    "); 
} 
class Cas { 
    public function __construct(){ 
     if (!function_exists('curl_init')){ 
      show_error('<strong>ERROR:</strong> You need to install the PHP module 
       <strong><a href="http://php.net/curl">curl</a></strong> to be able 
       to use CAS authentication.'); 
     } 
     $CI =& get_instance(); 
     $this->CI = $CI; 
     $CI->config->load('cas'); 
     $this->phpcas_path = $CI->config->item('phpcas_path'); 
     $this->cas_server_url = $CI->config->item('cas_server_url'); 
     if (empty($this->phpcas_path) 
      or filter_var($this->cas_server_url, FILTER_VALIDATE_URL) === FALSE) { 
      cas_show_config_error(); 
     } 
     $cas_lib_file = $this->phpcas_path . '/CAS.php'; 
     if (!file_exists($cas_lib_file)){ 
      show_error("<strong>ERROR:</strong> Could not find a file <em>CAS.php</em> in directory 
       <strong>$this->phpcas_path</strong><br /><br /> 
       Please, check your config file <strong>config/cas.php</strong> and make sure the 
       configuration <em>phpcas_path</em> is a valid phpCAS installation."); 
     } 
     require_once $cas_lib_file; 
     if ($CI->config->item('cas_debug')) { 
      phpCAS::setDebug(); 
     } 
     // init CAS client 
     $defaults = array('path' => '', 'port' => 443); 
     $cas_url = array_merge($defaults, parse_url($this->cas_server_url)); 
     phpCAS::client(CAS_VERSION_2_0, $cas_url['host'], 
      $cas_url['port'], $cas_url['path']); 
     // configures SSL behavior 
     if ($CI->config->item('cas_disable_server_validation')){ 
      phpCAS::setNoCasServerValidation(); 
     } else { 
      $ca_cert_file = $CI->config->item('cas_server_ca_cert'); 
      if (empty($ca_cert_file)) { 
       cas_show_config_error(); 
      } 
      phpCAS::setCasServerCACert($ca_cert_file); 
     } 
    } 
    /** 
     * Trigger CAS authentication if user is not yet authenticated. 
     */ 
    public function force_auth() 
    { 
     phpCAS::forceAuthentication(); 
    } 
    /** 
    * Return 
    */ 
    public function user() 
    { 
     if (phpCAS::isAuthenticated()) { 
      $userlogin = phpCAS::getUser(); 
      $attributes = phpCAS::getAttributes(); 
      return (object) array('userlogin' => $userlogin, 
       'attributes' => $attributes); 
     } else { 
      show_error("User was not authenticated yet."); 
     } 
    } 
    /** 
    * Logout and redirect to the main site URL, 
    * or to the URL passed as argument 
    */ 
    public function logout($url = '') 
    { 
     if (empty($url)) { 
      $this->CI->load->helper('url'); 
      $url = base_url(); 
     } 
     phpCAS::logoutWithRedirectService($url); 
    } 
    public function is_authenticated() 
    { 
     return phpCAS::isAuthenticated(); 
    } 
} 

Контроллер

public function index(){ 
    $this->load->library('cas'); 
    $this->cas->force_auth(); 
    $user = $this->cas->user(); 
    echo "<h1>Hello, $user->userlogin!</h1>"; 
} 

Пожалуйста, если вы знаете, как исправьте, можете ли вы мне сказать?

ответ

0

Если вы используете CAS 4.0.x, вы должны авторизовать свою службу в deployerConfigContext.xml. Он находится в src/main/webapp/WEBINF /. В файле вы найдете несколько конфигураций по умолчанию. Для демонстрационных целей используйте cas в открытом режиме serviceId="^(https?|imaps?)://.* (не рекомендуется).