Hello,

I'm trying to setup audit trail with CAS following 
http://www.ja-sig.org/wiki/display/CASUM/Auditing+and+Statistics+Via+Inspektr

When i try to authenticate (accessing Services Management application) I get 
the following exception:

Exception in thread "pool-2-thread-2" 
org.springframework.dao.DataIntegrityViolationException: 
PreparedStatementCallback
; SQL [Insert into COM_AUDIT_TRAIL(AUD_USER, AUD_CLIENT_IP, AUD_SERVER_IP, 
AUD_RESOURCE, AUD_ACTION, APPLIC_CD, AUD_DATE
) Values(?, ?, ?, ?, ?, ?, ?)]; ORA-01400: cannot insert NULL into 
("SSO01"."COM_AUDIT_TRAIL"."AUD_USER")
; nested exception is java.sql.SQLIntegrityConstraintViolationException: 
ORA-01400: cannot insert NULL into ("SSO01"."CO
M_AUDIT_TRAIL"."AUD_USER")

        at 
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.j
ava:228)
        at 
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTransl
ator.java:72)
        at 
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:607)
        at 
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:792)
        at 
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:850)
        at 
org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:858)
        at 
org.springframework.jdbc.core.simple.SimpleJdbcTemplate.update(SimpleJdbcTemplate.java:237)
        at 
org.inspektr.audit.support.JdbcAuditTrailManager$LoggingTask$1.doInTransactionWithoutResult(JdbcAuditTrailManager.ja
va:96)
        at 
org.springframework.transaction.support.TransactionCallbackWithoutResult.doInTransaction(TransactionCallbackWithoutR
esult.java:33)
        at 
org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:128)
        at 
org.inspektr.audit.support.JdbcAuditTrailManager$LoggingTask.run(JdbcAuditTrailManager.java:89)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: cannot 
insert NULL into ("SSO01"."COM_AUDIT_TRA
IL"."AUD_USER")

        at 
oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:85)
        at 
oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133)
        at 
oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455)
        at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413)
        at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034)
        at 
oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194)
        at 
oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:953)
        at 
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)
        at 
oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3387)
        at 
oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3468)
        at 
oracle.jdbc.driver.OraclePreparedStatementWrapper.executeUpdate(OraclePreparedStatementWrapper.java:1350)
        at 
org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at 
org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:798)
        at 
org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:591)
        ... 11 more


Debugging the server shows that the method resolveFromInternal(final JoinPoint 
joinPoint) of class 
org.jasig.cas.audit.spi.TicketOrCredentialBasedAuditablePrincipalResolver 
returns the following values to be set into AUD_USER column:
1st pass: arg1 is Credentials, return is arg1.toString();
2nd pass: arg1 is TGT, return is TGT.getAuthentication().getPrincipal().getId();
3rd pass: arg1 is ST, call on line 50 of 
TicketOrCredentialBasedAuditablePrincipalResolver returns null and hence the 
method returns an empty string.

We're using our own authentication handler.

Any clues?

Thank you,

AT.
-- 
You are currently subscribed to [email protected] as: 
[email protected]
To unsubscribe, change settings or access archives, see 
http://www.ja-sig.org/wiki/display/JSG/cas-user

Reply via email to