2014-11-21 13 views
1

OC4J에서 우리는 사용자 정의 JAAS LoginModule을 사용하고있었습니다. 그 동일한 논리를 복제하는 SqlAuthenticator를 만들었고 작동하는 것처럼 보입니다. 우리의 응용 프로그램의 경우, 로그인 페이지로 가서 잘못된 암호를 입력하면 로그인 실패 페이지로 이동합니다. 그 부분은 괜찮아.OC4J에서 WebLogic 12c로 마이그레이션 및 보안 구성 관련 질문

그러나 정확한 암호를 입력하면 WebLogic이 환영 메시지로 아무 메시지도 보내지 않습니다. 나를 도와 줄 로그 파일에서 아무것도 찾을 수 없습니다. 인증 문제가 아니라 인증 문제라고 생각합니다. SqlAuthenticator는 데이터베이스에서 우리 그룹의 앱과 사용자를 가져올 수 있기 때문에 SqlAuthenticator가이를 처리한다고 가정했습니다.

전에 "역할"을 다뤄 본 적이 없습니다. 나는 그들이 우리가 정말로 필요로하는 "집단"과 어떻게 다른지 잘 모르겠습니다. 역할을 정의해야합니까? 그들은 "그룹"에 묶여 있습니까? 구성해야하는 역할 및 정책입니까? 내가 뭘 놓치고 있니?

여기 여기에 web.xml을

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>SecurePages</web-resource-name> 
     <description>All secure pages</description> 
     <url-pattern>/secure/*</url-pattern> 
     <http-method>POST</http-method> 
     <http-method>GET</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>Etrack2 Administrators</role-name> 
    </auth-constraint> 
    <user-data-constraint> 
     <description>SSL not required</description> 
     <transport-guarantee>NONE</transport-guarantee> 
    </user-data-constraint> 
    </security-constraint> 

    <login-config> 
    <auth-method>FORM</auth-method> 
    <form-login-config> 
     <form-login-page>/login.jsp</form-login-page> 
     <form-error-page>/login_failed.jsp</form-error-page> 
    </form-login-config> 
    </login-config> 

    <security-role> 
    <role-name>Etrack2 Administrators</role-name> 
    </security-role> 

여기 내 weblogic.xml의이기의 관련 부분 로그 파일

<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> < Roles:Admin,Anonymous> 
<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> < Resource: type=<url>, application=ifactory-security, contextPath=/ifactory-security, uri=/secure/index.jsp, httpMethod=GET> 
<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> < Direction: ONCE> 
<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> < Context Handler: > 
<SecurityEEngine> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <evaluate([Users: gkephart|Groups: Final Quality Control Release,users,EDA Failover,Enroll Administrators,Read Only,QA Documentation,Etrack2 Administrators|Roles: not null], type=<url>, application=ifactory-security, contextPath=/ifactory-security, uri=/secure/index.jsp, httpMethod=GET)> 
<SecurityEEngine> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <Evaluating resource [email protected] with expression: {Rol(Etrack2 Administrators,Etrack2 Administrators)}> 
<SecurityEEngine> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <Evaluation result: false> 
<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <Default Authorization isAccessAllowed(): returning DENY> 
<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <com.bea.common.security.internal.service.AccessDecisionServiceImpl.isAccessAllowed AccessDecision returned DENY> 
<SecurityAdjudicator> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <com.bea.common.security.internal.service.AdjudicationServiceImpl.adjudicate Results=[ DENY ]> 
<SecurityAdjudicator> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <com.bea.common.security.internal.service.AdjudicationServiceImpl.adjudicate Resource=type=<url>, application=ifactory-security, contextPath=/ifactory-security, uri=/secure/index.jsp, httpMethod=GET> 
<SecurityAdjudicator> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <DefaultAdjudicatorImpl.adjudicate results: DENY > 
<SecurityAdjudicator> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <com.bea.common.security.internal.service.AdjudicationServiceImpl.adjudicate Adjudictor returned false, returning that value> 
<SecurityAtz> <[ACTIVE] ExecuteThread: '2' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1416943077504> <BEA-000000> <com.bea.common.security.internal.service.AuthorizationServiceImpl.isAccessAllowed returning adjudicated: false> 

의 조각입니다. 그룹 및 사용자를 주체로 추가했습니다.

<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"> 
    <description><![CDATA[Generated by XDoclet. Use weblogicwebxml's description attribute to modify this value.]]></description> 
    <weblogic-version>12</weblogic-version> 
    <!-- 
    If you do not define a security-role-assignment element and its sub-elements, the Web application container implicitly 
    maps the role name as a principal name and logs a warning. 
    The EJB container does not deploy the module if mappings are not defined. 

    Consider the following usage scenarios for the role name is "role_xyz" 
    * If you map "role_xyz" to user "joe" in weblogic.xml, role_xyz becomes a local role. 
    * If you specify role_xyz as an externally defined role, it becomes global (it refers to the role defined at the realm level). 
    * If you do not define a security-role-assignment element, role_xyz becomes a local role, 
     and the Web application container creates an implicit mapping to it and logs a warning. 
    --> 
    <security-role-assignment> 
    <role-name>Etrack2 Administrators</role-name> 
    <principal-name>Etrack2 Administrators</principal-name> 
    <principal-name>gkephart</principal-name> 
    </security-role-assignment> 
    <context-root>/ifactory-security</context-root> 
</weblogic-web-app> 
+0

흥미롭게도 FireFox에서는 환영 페이지가 표시되지만 IE에서는 HTTP 403 오류 페이지가 표시됩니다. –

+0

올바르지 않은 암호를 입력했을 때 관리자/서버 로그에 표시되는 내용은 무엇입니까? 도움이되는 정보가 충분하지 않습니다. http://middlewaremagic.com/weblogic/?p=5476 –

+0

인증 실패를 나타내는 로그 파일 발췌 부분을 첨부했습니다. 입력하신 URL에 도달 할 수 없습니다. –

답변

2

로그 파일과 web.xml을 사용하면 사용자/그룹이 속할 수있는 보안 역할을 설정해야한다는 것을 알 수 있습니다. 현재 사용자에게는 연관된 역할이 없으므로 사용자는 거부됩니다. 에서

당신의 web.xml</login-config>이 좋아하는 후가 보안 역할을 생성해야합니다

<security-role> 
    <role-name>Etrack2 Administrators</role-name> 
</security-role> 

이 그런 다음 weblogic.xml 파일에서 해당 역할에 대한 액세스 권한이있는 사용자를 정의 할 필요가있다. 오류 메시지에 따르면 Etrack2 Administrators 그룹이 이미 설정되어있는 것 같습니다 ( gkephart). 해당 그룹은 아래의 principal-name입니다. 필요하다면 당신은 또한 개별 사용자 이름을 지정할 수 있지만 그룹 충분합니다 :
<security-role-assignment> 
    <role-name>Etrack2 Administrators</role-name> 
    <principal-name>Etrack2 Administrators</principal-name> 
</security-role-assignment> 

은 더 많은 정보를위한 Oracle docs here에서보세요.

This is a decent example뿐만 아니라 weblogic 콘솔 및 배포 설명자를 통해 수행하는 방법에 대해서도 설명합니다. 암시 적 역할 매핑에


노트는 Oracle docs here에서 촬영 :

를 사용하여 암시 적 역할 할당을 사용하면 알려진 사용자 이름에 하드 코드 배포시에 역할 매핑을합니다. 암시 적 역할 할당 (security-role-assignment weblogic.xml의 에서 생략)와

는, 웹 로직은 동일한 이름의 역할에 보안 역할 이름을 지정합니다. 정의 된 역할 이름이 보안 영역에 실제로 사용 가능한지 여부와 관계없이 암시 적 역할 매핑은 입니다.

<Webapp: ServletContext(id=id,name=application,context-path=/context), the 
role: everyone defined in web.xml has not been mapped to principals in 
security-role-assignment in weblogic.xml. Will use the rolename itself 
as the principal-name.> 

당신은 그 메시지를 설정할 수 있습니다 : 당신이 의 web.xml에서 "모든 사람"역할을 사용하지만 명시 적으로 weblogic.xml의의 역할을 지정하지 않은 경우, 예를 들어, 서버는 경고를 표시 떨어져서. 자세한 정보는 여기에있는 문서를 참조하십시오.

+0

감사. 나는 그것을 이미 정확하게했기 때문에 더 많이 게시 했어야했다. 원래 게시물에 더 추가하겠습니다. –

+0

글쎄, 이제 약간 당황 스럽네. weblogic.xml을 만들었지 만 WAR 파일에 포함하는 것을 잊었습니다. 내가 그렇게했을 때 나는 승인을 받았다. 이제는 독자적으로 해결해야 할 또 다른 무관 한 문제가 있습니다. 그러나 질문이 있습니다. 왜 역할을 하나 이상의 주체에 명시 적으로 매핑해야합니까? 문서는 내가하지 않으면 WebLogic이 내게 암시 적으로이를 수행 할 것임을 나타냅니다. –

+1

대답에 암시 적 역할에 대해 몇 가지 언급을 추가했습니다. –