2016-09-02 21 views
0

Apache Oltu、Javaサーブレット、およびAPIにアクセスするためにOAuth2認証が必要なJSPを使用してMavenプロジェクトを作成しています。これまでのところ、私はウェブサイトにリダイレクトされ、アクセスを許可することができましたが、ウェブサイトが私のコールバックURLにリダイレクトされると、私のコールバックURLに「ページロードがエラーで失敗しました: サーバーに接続できませんでした。'Apache Oltu OAuth2.0コールバック処理

私の誤ってURLをマッピングするのはこれですか?あるいは私は何か他のものを逃していますか認証コードがアクセストークンと交換された後、ユーザーをapiConnector.jspにリダイレクトしようとしています。

コールバック処理するために、私のサーブレット

:、私は私のproblem--を解決することができた多くの研究を行った後

import java.io.IOException; 
import java.io.PrintWriter; 

import javax.servlet.RequestDispatcher; 
import javax.servlet.ServletException; 
import javax.servlet.annotation.WebServlet; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.apache.oltu.oauth2.as.response.OAuthASResponse; 
import org.apache.oltu.oauth2.client.OAuthClient; 
import org.apache.oltu.oauth2.client.URLConnectionClient; 
import org.apache.oltu.oauth2.client.request.OAuthClientRequest; 
import org.apache.oltu.oauth2.client.response.GitHubTokenResponse; 
import org.apache.oltu.oauth2.client.response.OAuthAuthzResponse; 
import org.apache.oltu.oauth2.common.exception.OAuthProblemException; 
import org.apache.oltu.oauth2.common.exception.OAuthSystemException; 
import org.apache.oltu.oauth2.common.message.OAuthResponse; 
import org.apache.oltu.oauth2.common.message.types.GrantType; 

import OAuth2.main.OAuthUtils; 
import OAuth2.model.OAuth2Details; 

/** 
* Servlet implementation class AuthCallbackController 
*/ 
@WebServlet("/AuthCallbackController") 
public class AuthCallbackController extends HttpServlet { 
    private OAuth2Details authDetails; 
    private static final long serialVersionUID  = 1L; 
    private static final String LIST_DATA   = "/apiConnector.jsp"; 
    public static final String CODE_URL_PARAM_NAME = "code"; 
    public static final String ERROR_URL_PARAM_NAME = "error"; 
    public static final String URL_MAPPING   = "/OAuth2Callback"; 
    public static final String REDIRECT_URL   = "/"; 


public AuthCallbackController() { 
    super(); 
    authDetails = OAuthUtils.createOAuth2Details(); 
} 

/** 
* Handles the callback response from Higi Authorization Server 
*/ 
protected void doGet (HttpServletRequest servletRequest, HttpServletResponse servletResponse) throws ServletException, IOException { 
    String forward = LIST_DATA;  
    try { 

     OAuthAuthzResponse oar = OAuthAuthzResponse.oauthCodeAuthzResponse(servletRequest); 
     String code = oar.getCode(); 


     OAuthClientRequest request = OAuthClientRequest 
       .tokenLocation(authDetails.getTokenEndpoint()) 
       .setGrantType(GrantType.AUTHORIZATION_CODE) 
       .setClientId(authDetails.getClientId()) 
       .setClientSecret(authDetails.getClientSecret()) 
       .setRedirectURI(authDetails.getRedirectURI()) 
       .setCode(code) 
       .buildQueryMessage();   

     OAuthClient oAuthClient = new OAuthClient (new URLConnectionClient()); 
     GitHubTokenResponse oAuthResponse = oAuthClient.accessToken(request, GitHubTokenResponse.class); 

     String accessToken = oAuthResponse.getAccessToken(); 
     String refreshToken = oAuthResponse.getRefreshToken(); 
     Long expiresIn  = oAuthResponse.getExpiresIn(); 


     OAuthResponse r = OAuthASResponse 
       .tokenResponse(HttpServletResponse.SC_OK) 
       .setAccessToken(accessToken) 
       .setExpiresIn("3600") 
       .setRefreshToken(refreshToken) 
       .buildJSONMessage(); 

     servletResponse.setStatus(r.getResponseStatus()); 
     PrintWriter pw = servletResponse.getWriter(); 
     pw.print(r.getBody()); 
     pw.flush(); 
     pw.close(); 

     // Forward attributes to page 
     RequestDispatcher view = servletRequest.getRequestDispatcher(forward); 
     servletRequest.setAttribute("response",r.getBody()); 
     view.forward(servletRequest, servletResponse); 

    } catch (OAuthProblemException | OAuthSystemException ex) { 
     ex.printStackTrace(); 
    } 

} 


} 

web.xmlの

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> 

    <display-name>HigiSalesforceConnector</display-name> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 


    <servlet> 
    <servlet-name>APIConnectorCallbackHandlerServlet</servlet-name> 
    <servlet-class>OAuth2.controller.AuthCallbackController</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>APIConnectorCallbackHandlerServlet</servlet-name> 
    <url-pattern>/OAuth2Callback/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

答えて

0

を作成するためになってしまいました更新されたTomcat設定をSSL用に使用したEclipse上の新しいサーバー

関連する問題