contextpath не устанавливается в URL при вызове jsp сервелту - PullRequest
0 голосов
/ 20 сентября 2019

У меня есть веб-проект maven с именем

gitlab.configuration
, поэтому путь к проекту должен быть
<a href="http://localhost:8080/gitlab.configuration/" rel="nofollow noreferrer">http://localhost:8080/gitlab.configuration/</a>

. Имеется файл jsp, содержащий html-тег "a".когда она нажата, я буду перенаправлен на предварительно определенный URL обратного вызова.

<a href="http://localhost:8080/gitlaboslcadaptor/oauth/callback" rel="nofollow noreferrer">http://localhost:8080/gitlaboslcadaptor/oauth/callback</a>

, но вместо вышеуказанного URL правильный URL должен быть

<a href="http://localhost:8080/gitlab.configuration/gitlaboslcadaptor/oauth/callback" rel="nofollow noreferrer">http://localhost:8080/gitlab.configuration/gitlaboslcadaptor/oauth/callback</a>
.

. Мой вопрос: почему он не устанавливает этот contextpath?

здесь ятакже приложил некоторые изображения.

, пожалуйста, посмотрите на изображения, что я говорю, если вы не очистите.

entryPointForOauth2caller.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="ISO-8859-1">
    <title>Oauth2caller</title>
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container d-flex h-100">
    <div class="row align-self-center w-100">
        <div class="col-6 mx-auto">
            <div class="jumbotron text-center">
               <!-- <form action="https://gitlab.com/oauth/authorize?client_id=153c017c0f33d32abfb8b950983dcfce0cbe7ba49751033c0626c4f00f51ac72&redirect_uri=http://localhost:8080/gitlaboslcadaptor/oauth2/callback&response_type=code&state=941891abc&scope=api+read_user+read_registry+sudo+openid+profile+email" method="get">
                    <button class="btn btn-primary" type="submit">MakeAuthorize</button>
                </form> -->
                <a href="https://gitlab.com/oauth/authorize?client_id=153c017c0f33d32abfb8b950983dcfce0cbe7ba49751033c0626c4f00f51ac72&response_type=code&redirect_uri=http://localhost:8080/gitlaboslcadaptor/oauth2/callback&state=941891abc&scope=api+read_user+read_registry+sudo+openid+profile+email">Authorize</a>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Oauth2ProviderServlet.java (класс сервлета)

package com.persistent.unite.oslc4j.gitlab.security.oauth2;

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Oauth2ProviderServlet
 */

@WebServlet("/gitlaboslcadaptor/oauth2/callback/*")
public class Oauth2ProviderServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Oauth2ProviderServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("init mehtod in provider");
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String code = request.getParameter("code");
        String state = request.getParameter("state");
        System.out.println("call back url's code for access token: " + code);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("dopost mehtod called.");
        doGet(request, response);
    }

}

если вызывается URL обратного вызова, то мой метод doget сервлета по крайней мере должен что-то напечатать.но, кажется, мой serlvet не будет звонить вообще.

здесь я приложил изображения, которые я получаю.

ui for displaying first gitlab endpoint for oauth2 authorization

после нажатияСсылка "авторизовать" после вывода я получаю.

first endpoint redirect to callback url

1 Ответ

0 голосов
/ 20 сентября 2019

После нескольких часов отладки я обнаружил проблему.URL обратного вызова неправильно настроен.изначально это был

<a href="http://localhost:8080/gitlaboslcadaptor/oauth/callback" rel="nofollow noreferrer">http://localhost:8080/gitlaboslcadaptor/oauth/callback</a> 
, но правильный должен быть
<a href="http://localhost:8080/gitlab.configuration/gitlaboslcadaptor/oauth/callback" rel="nofollow noreferrer">http://localhost:8080/gitlab.configuration/gitlaboslcadaptor/oauth/callback</a> 

этот URL должен быть корректно записан и в самом аккаунте gitlab.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...