On Mon, Nov 22, 2010 at 5:04 AM, 橡树 <[email protected]> wrote:
>
> I'm using the StatusNet 0.9.6. The plugin CasAuthentication was installed for
> user authentication. I wan to use the QueryDatabaseAuthenticationHandler. The
> configuration in deployerConfigContext.xml is as following:
>
[..]
Hi Blue,
Statusnet uses user id as salt in md5 [1]. I looked at
QueryDatabaseAuthenticationHandler and it can't do it, you need to
implement your AbstractJdbcUsernamePasswordAuthenticationHandler.
This should work
package your.package;
import org.jasig.cas.authentication.handler.AuthenticationException;
import org.jasig.cas.authentication.principal.UsernamePasswordCredentials;
import org.springframework.dao.IncorrectResultSizeDataAccessException;
import javax.validation.constraints.NotNull;
public final class StatusNetQueryDatabaseAuthenticationHandler extends
AbstractJdbcUsernamePasswordAuthenticationHandler {
@NotNull
private String sql;
protected final boolean authenticateUsernamePasswordInternal(final
UsernamePasswordCredentials credentials) throws
AuthenticationException {
final String username =
getPrincipalNameTransformer().transform(credentials.getUsername());
final String password = credentials.getPassword();
try {
final List<Map<String, Object>> rs =
getJdbcTemplate().queryForObject(
this.sql, username);
if(rs.size()<1)
return false;
final String userid = (String)rs.get(0).get("id");
final String dbPassword = (String)rs.get(0).get("password");
final String encryptedPassword = this.getPasswordEncoder().encode(
password + userid);
return dbPassword.equals(encryptedPassword);
} catch (final IncorrectResultSizeDataAccessException e) {
// this means the username was not found.
return false;
}
}
/**
* @param sql The sql to set.
*/
public void setSql(final String sql) {
this.sql = sql;
}
}
1.
<bean class="your.package.StatusNetQueryDatabaseAuthenticationHandler">
<property name="dataSource" ref="dataSource" />
<property name="sql" value="select id,password from app_user where
username=?" />
<property name="passwordEncoder" ref="MD5PasswordEncoder" />
</bean>
Michele
[1] http://lists.status.net/pipermail/statusnet-dev/2010-November/003707.html
_______________________________________________
StatusNet-dev mailing list
[email protected]
http://lists.status.net/mailman/listinfo/statusnet-dev