2017-09-07 14 views
0

へのアクセスへのPHPアプリケーションを許可する私は/のOAuth2/openam者のエンドポイントを認可へのアクセスにアクセスするには、このPHPスクリプトを使用しています:は/のOAuth2 /エンドポイントOPENAMを承認

<?php 
    //debug 
    error_reporting(E_ALL); 
    ini_set('display_errors', 1); 
    //debug end 
    function get_web_page($url) 
    { 
     $options = array( 
     CURLOPT_RETURNTRANSFER => true,  // return web page 
     CURLOPT_HEADER   => true, // return headers 
     CURLOPT_FOLLOWLOCATION => true,  // follow redirects 
     CURLOPT_ENCODING  => "",  // handle all encodings 
     CURLOPT_USERAGENT  => "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0", // who am i 
     CURLOPT_AUTOREFERER => true,  // set referer on redirect 
     ); 

     $ch  = curl_init($url); 
     curl_setopt_array($ch, $options); 
     $content = curl_exec($ch); 
     $header = curl_getinfo($ch); 
     curl_close($ch); 
     //print($header[0]); 
     echo $content; 
     //var_dump($content); 
     return $header; 
    } 
    $thisurl = "http://openam.example.com:8080/openam/oauth2/authorize?realm=/openLDAP&client_id=agent2&redirect_uri=http://openam.test.com:8080/openam&response_type=code&scope=profile";` 
    $myUrlInfo = get_web_page($thisurl); 
    //echo $myUrlInfo["url"]; 
?> 

そして、私は空白のWebページを取得していますが、私は "ForgeRock Access ..."のサブタイトルで見ることができ、 "agent2"を "agent1"に変更すると、私はこのエラーがデバッグフォルダにあるので、agent2認証が成功したと思います。ERROR: Unable to get Client Registration for client_Id = agent1 それが私がエンドポイントに接続するが、私はなぜユーザー認証Webページにリダイレクトされていないのか分からない。 私はすでに同じスクリプトを試して、URLを "https://www.google.fr/"に変更します。その場合、私はGoogleにリダイレクトされます。 ご協力いただきありがとうございます。 var_dump($ myUrlInfo)を追加した後の出力。 :

array(26){["url"] => string(35) "http://openam.test.com:8080/openam/" ["content_type"] =>文字列(9) "text/html" ["http_code"] => int(200 ["ssl_verify_result"] => int(0)["redirect_count"]は、["header_size"] => int(391)["request_size"] => int(498) float(1.7E-5)["pretransfer_time"] => int(1)["total_time"] => float(0.007415)["namelookup_time"] => float(1.4E-5)["connect_time" float(169)["speed_download"] => float(219285)["speed_upload"] => float(9.4E-5)["size_upload"] => float float(0)["download_content_length"] => float(1626)["upload_content_length"] => float(0)["starttransfer_time"] =>浮動小数点(0.001315)["redirect_time"] =>浮動小数点(0.006082)[" (0){} ["primary_port"] =>文字列(12) "XXX.XX.XX.XX" ["certinfo"] =>配列(0) > int(xx)["local_ip"] => string(12) "XX.XX.XX.XX" ["local_port"] => t(xxx)}

+0

openamがライブドメインのみにリダイレクトするかどうかをテストする別のライブドメインにリダイレクトし、サブドメインではなくドメインにリダイレクトしようとします。 –

+0

ありがとう@LasVegasCoder。ライブドメインではどういう意味ですか?私は既にhttp://openam.example.com:8080/openamにリダイレクトしようとしましたが、このエラーが発生しました:Not Found 要求されたURL/umaTestAppli/UI/Loginはこのサーバ上に見つかりませんでした。私はなぜそれが/ umaTestAppli/UI/Loginを取得しようとしているのか分かりませんでした。 http://openam.test.com:8080/openam/XUI/#login/ – aicha

+0

私のPHPアプリケーションのURLは:http://uma.test.com/umaTestAppli/ – aicha

答えて

0

openamのログウェブページにリダイレクトされるためには、ヘッダメソッドを使う必要がありました。

<html> 
     <head> 
      <meta charset="utf-8"/> 
      <link rel="stylesheet" href="style.css"/> 
      <title>UMA forgerock test appli</title> 
     </head> 

     <body> 
      <h2 id="generateCode">Retrieve authorization code</h2> 
       <form method="post" action=""> 
        <input id="bouton" type="submit" name="generateCode" value="generateCode"> 
       </form> 
      <?php 
       if(isset($_POST['generateCode'])) { 
        $url = "http://openam.test.com:8080/openam/oauth2/authorize"; 
        $params = array(
         "response_type" => "code", 
         "client_id" => xxx, 
         "realm" => "/openLDAP", 
         "redirect_uri" => 'http://uma.test.com/umaTestAppli', 
         "scope" => "profile" 
        ); 

        $request_to = $url . '?' . http_build_query($params); 
        header("Location: " . $request_to); 
       } 
      ?> 
     </body> 
    </html> 
関連する問題