문제

웹 서버에서 401 메시지가 수신 될 때 Java를 사용하여 브라우저 인증 대화 상자를 과도하게 승차하는 방법이 있습니까? 이 대화 상자가 언제 표시되는지 알고 싶습니다. 사용자에게 제공되는 대신 자격 증명을 작성합니다.

응용 프로그램 개요 :

웹 서버를 작성 했으므로 본질적으로 누군가가 외부 브라우저를 열고 로컬 호스트 및 포트를 넣어 표시되는 데이터에 액세스하는 것을 막고 싶습니다. 내 앱에는 서면 서버에 링크 된 내장 된 웹 브라우저가 있습니다. 브라우저에는 해독 된 콘텐츠가 표시되므로 인증을 강제로 내장 브라우저의 경우조차도 외부 브라우저에는 자격 증명이 필요합니다. 내장 브라우저가 파일에 액세스하려고하는 경우 사용자의 자격 증명을 제공하고 콘텐츠를 표시합니다.

도움이 되었습니까?

해결책 2

SWT 3.5M6에는 IT 호출 AuthenticationListener에 새로운 리스너가 있습니다. 서버에서 전달 된 인증 이벤트에 대해 간단히 듣고 발사됩니다. 아래 코드는 내가 원하는 동작을 수행하는 것입니다. 인증을 기다립니다. 호스트가 내 응용 프로그램 인 경우 자격 증명을 전달합니다. 물론 적절한 변수로 user_name, password 및 host_name을 채우십시오. 그렇지 않으면 브라우저 인증 대화 상자가 팝업되고 사용자가 자격 증명을 입력 할 수 있습니다. 이 코드는 Eclipse SWT 스 니펫 페이지에서도 찾을 수 있습니다.

webbrowser.addauthenticationListener (new AuthenticaticListener ()

{

        public void authenticate(AuthenticationEvent event) {
            try {
                URL url = new URL(event.location);

                if (url.getHost().equals(HOST_NAME)) 
                {
                    event.user = USER_NAME;
                    event.password = PASSWORD;
                } 
                else 
                {       
                    /* do nothing, let default prompter run */
                }
            } catch (MalformedURLException e) {
                /* should not happen, let default prompter run */
            }
        }
    });

다른 팁

비밀번호를 표시하지 않으면 URL을 구성하여 자격 증명을 전달할 수 있습니다. http : // username : password@www.example.com 이것은 인증 상자를 통과하여 전달되지만 사용자에게 자격 증명을 보여 주므로 원하는 것이 아닐 수도 있습니다.

귀하의 질문은 약간 불분명합니다. 전체 기본 인증은 HTTP 헤더를 기반으로합니다.

브라우저가 승인 헤더를 가져 오면 대화 상자를 표시합니다. 대화 상자의 내용은 서버로 다시 전송됩니다. 그것에 대해 특별한 것은 없습니다. iser username : base64의 암호 인코딩. 살펴보십시오

위키 백과

문제는 방해를 원하는 방법입니다. 승인 헤더를 캡처 한 다음 다음 요청을 위해서는 자격 증명을 포함시키기 위해 HTTP 헤더를 변경해야합니다.

도움이되기를 바랍니다

나는 이것이 대부분 브라우저 의존적 동작이며 서버가 브라우저에보고하는 것 같아요.

예를 들어, Microsoft 제품인 Internet Explorer는 익명 요청이 401에서 실패한 후 Windows 자격 증명의 자동 전송 (인터넷 설정 에서이 동작을 수정할 수 있음)을 직접 지원합니다.

예를 들어, Firefox는 암호 관리자를 통해 ID와 암호를 기억하도록 설정된 경우에도 사용자에게 항상 프롬프트하지 않으며 항상 프롬프트하지 않습니다. 즉, 자동 로진이 실패하면 즉시 프롬프트가 발생합니다 (예 : Windows 자격 증명은 ID가 허용되지 않기 때문에 여전히 401이 발생합니다).

웹 개발자로서 가장 기대하고 조화로운 방식으로 작동하도록 서버와 앱을 설정하는 것 외에도이 문제를 제어 할 수 있다고 생각하지 않습니다. 검은 모자 영토.

인증을 위해 사용자에게 표시되는 내용을 제어하려면 Web.xml의 로그인 -Config 섹션에서 기본에서 양식으로 AUTH-METHOD를 변경할 수 있습니다.

그러면 사용자가 인증 할 때 어떤 페이지를 표시 해야하는지 지정할 수 있으며, 자격 증명을 미리 채우는 것으로 생각하지만 보안의 전체 목적을 물리 치지 않습니까?

웹 응용 프로그램에 대한 인증 설정

자세한 내용은 편집 :

저의 유일한 제안은 인증 메드를 클라이언트 케어로 변경하고 두 방향 SSL이 필요합니다. 여기서 클라이언트는 서버에 인증서를 제시해야합니다. 임베디드 브라우저에 인증서를 설치하고 (외부 브라우저가 인증서를 얻을 수 없는지 확인) 괜찮을 것입니다. 그리고 실제로 이것은 인증 대화 상자가 표시되는 것을 막아야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top