2016-05-24 3 views
0

CASビルドSSOを使用しています。自分のWebアプリケーションでCAS RESTful APIを使用してログイン/ログアウトを実装したいと思います。Webアプリケーションで安心してintergrateする方法は?

このようなAPIはhttp://sso.cvs.cn:9990/cas-server-webapp/v1/tickets です。テストケースでテストしても問題ありません。ここにコードです:

public static void main(String... args) throws Exception { 
    String username = "123"; 
    String password = "123"; 
    validateFromCAS(username, password); 
} 

public static boolean validateFromCAS(String username, String password) throws Exception { 

    String url = "http://sso.cvs.cn:9990/cas-server-webapp/v1/tickets"; 
    try { 
     HttpURLConnection hsu = (HttpURLConnection) openConn(url); 
     String s = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8"); 
     s += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8"); 

     System.out.println(s); 
     OutputStreamWriter out = new OutputStreamWriter(hsu.getOutputStream()); 
     BufferedWriter bwr = new BufferedWriter(out); 
     bwr.write(s); 
     bwr.flush(); 
     bwr.close(); 
     out.close(); 

     String tgt = hsu.getHeaderField("location"); 
     System.out.println(hsu.getResponseCode()); 
     if (tgt != null && hsu.getResponseCode() == 201) { 
      System.out.println(tgt); 

      System.out.println("Tgt is : " + tgt.substring(tgt.lastIndexOf("/") + 1)); 
      tgt = tgt.substring(tgt.lastIndexOf("/") + 1); 
      bwr.close(); 
      closeConn(hsu); 

      String serviceURL = "http://sso.cvs.cn:7070/cas-simple-site-alpha/"; 
      String encodedServiceURL = URLEncoder.encode("service", "utf-8") + "=" + URLEncoder.encode(serviceURL, "utf-8"); 
      System.out.println("Service url is : " + encodedServiceURL); 

      String myURL = url + "/" + tgt; 
      System.out.println(myURL); 
      hsu = (HttpURLConnection) openConn(myURL); 
      out = new OutputStreamWriter(hsu.getOutputStream()); 
      bwr = new BufferedWriter(out); 
      bwr.write(encodedServiceURL); 
      bwr.flush(); 
      bwr.close(); 
      out.close(); 
      System.out.println("Response code is: " + hsu.getResponseCode()); 
      BufferedReader isr = new BufferedReader(new InputStreamReader(hsu.getInputStream())); 
      String line; 
      System.out.println(hsu.getResponseCode()); 
      while ((line = isr.readLine()) != null) { 
       System.out.println(line); 
      } 
      isr.close(); 
      hsu.disconnect(); 
      return true; 
     } else { 
      return false; 
     } 
    } catch (MalformedURLException mue) { 
     mue.printStackTrace(); 
     throw mue; 
    } catch (IOException ioe) { 
     ioe.printStackTrace(); 
     throw ioe; 
    } 
} 

私はどのようにWebアプリケーションでapiを使用できますか?

答えて

0

私が正しく理解しているのは、あなたの質問が一般的にどのように役立つかです。このような場合には、ユーザーがCASサーバーによって認証されたときに

Soは、CAS上で有効になって安らかなAPIで、彼は同じCASでSSOを有するように構成されている他のアプリケーション(CAS対応サービス)へのアクセスが許可されるだろうサーバ。また、documentationが示唆するように、POSTでチケットのリクエストを行うこともできます。

また、アプリケーションがCASにプログラムでアクセスする必要があることもあります。認証されたユーザーに代わって、カスタマイズされた1つのアプリケーションが他のカスタマイズされたアプリケーションのREST APIを呼び出すことができるとします。この目的のために、CAS Restプロトコルは安らかなapiがなければ、元のcas-serverとcas-clientだけを使用して、

+0

を最初に実行します。それは成功です。ログインページとリダイレクトを含める。 クライアントアプリケーションで安らかなAPIを使用して、ログインページがカスタマイズされ、ログインページで安らかなログインAPIを呼び出す方法と、プログラムでTGTをクッキーに書き込む方法はありますか? –

+0

@JJ_Jacob httpclientにパラメータとして渡すユーザー名とパスワードを渡し、http:// yourip/cas/v1/ticketsにPOSTリクエストを実行できます。成功した応答はtgtになります。あなたは私が答えに投稿したリンクへのより多くの情報を見つけることができます – fnkbz

関連する問題