CAS sso構成
最近ssoの単点登録の問題を研究して、ネット上の多くのケースとコードを研究して、いつも大きな違いがあることを発見して、最後に公式サイトを通じてダウンロードして、やっとcas 3とcas 4の配置に違いがあることを発見して、これは違いが大きい原因です.
公式サイトの住所は以下の通りです. https://www.apereo.org/search/node/cas
以下はcas 4のみについて整理しましょう.cas 4はcas 3に対して増加しているからです.
1.ダウンロード
アドレスhttp://downloads.jasig.org/
cas-server-4.0.0-release.tar.gz
cas-client-3.3.3-release.tar.gz
2.Sever側の構成
解凍cas-server-4.0.0 module/cas-server-webapp-4.0.0.warをTomcatのwebappsディレクトリにコピーし、cas.warと名前を変更し、Tomcatを起動して圧縮を解除
tomcatの起動
http://localhost:8080/casで、ログインページに入ります.
デフォルトのユーザーはcasuser/Mellonで、ログインに成功すると正常に起動し、cas 3のデフォルトのユーザーはなく、ユーザー名のパスワードだけでずっとできます.
2.1データベースを使用してユーザーを検証する設定
依存する必要があります:c 3 p 0-0.9.1.2.jar,mysql-connector-java-5.21.2.jar,cas-server-support-jdbc-4.0.0.jar,cas-server-support-ldap-4.0.0.jar
変更 deployerConfigContext.xml
注記元のデフォルトユーザーは、データベースの代替を使用して、新しいデータベースtestを作成し、md 5暗号化を一時的に使用していません.データベースtestのusersテーブルはpasswdとnameを直接設定すればいいです.
ここのパスワードは パスワード{ユーザー名} 暗号化の方式、だからカスタマイズのパスワードを使って検査して、再起動して、テストは合格します
3.クライアント側の構成
3.1一般方式
testwebプロジェクトを新規作成し、ClientエンジニアリングWEB-INF/libの下にcas-client-core-3.2.1.jarパッケージを追加
ここではHelloWorld servletを設定してテストに合わせます
訪問localhost:8080/testWeb 1/HelloWorldExample ,最初のいずれかのページにアクセスすると、
https://localhost:8080/cas/login認証を行う
3.2 spring方式
ここではspring securityとcasを組み合わせた方法を採用します
具体的なspring securityはcasの構成と結合して、参考にすることができますhttp://5148737.blog.51cto.com/5138737/1827795
公式サイトの住所は以下の通りです. https://www.apereo.org/search/node/cas
以下はcas 4のみについて整理しましょう.cas 4はcas 3に対して増加しているからです.
1.ダウンロード
アドレスhttp://downloads.jasig.org/
cas-server-4.0.0-release.tar.gz
cas-client-3.3.3-release.tar.gz
2.Sever側の構成
解凍cas-server-4.0.0 module/cas-server-webapp-4.0.0.warをTomcatのwebappsディレクトリにコピーし、cas.warと名前を変更し、Tomcatを起動して圧縮を解除
tomcatの起動
http://localhost:8080/casで、ログインページに入ります.
デフォルトのユーザーはcasuser/Mellonで、ログインに成功すると正常に起動し、cas 3のデフォルトのユーザーはなく、ユーザー名のパスワードだけでずっとできます.
2.1データベースを使用してユーザーを検証する設定
依存する必要があります:c 3 p 0-0.9.1.2.jar,mysql-connector-java-5.21.2.jar,cas-server-support-jdbc-4.0.0.jar,cas-server-support-ldap-4.0.0.jar
変更 deployerConfigContext.xml
1)
2) handler
注記元のデフォルトユーザーは、データベースの代替を使用して、新しいデータベースtestを作成し、md 5暗号化を一時的に使用していません.データベースtestのusersテーブルはpasswdとnameを直接設定すればいいです.
3) md5 ,
4)
public class MyQueryDatabaseAuthenticationHandler extends AbstractJdbcUsernamePasswordAuthenticationHandler{
@NotNull
private String sql;
@Override
protected HandlerResult authenticateUsernamePasswordInternal(UsernamePasswordCredential credential)throws GeneralSecurityException, PreventedException {
final String username = credential.getUsername();
final String encryptedPassword = this.getPasswordEncoder().encode(credential.getPassword()+"{"+username+"}");
try {
final String dbPassword = getJdbcTemplate().queryForObject(this.sql, String.class, username);
if (!dbPassword.equals(encryptedPassword)) {
throw new FailedLoginException("Password does not match value on record.");
}
} catch (final IncorrectResultSizeDataAccessException e) {
if (e.getActualSize() == 0) {
throw new AccountNotFoundException(username + " not found with SQL query");
} else {
throw new FailedLoginException("Multiple records found for " + username);
}
} catch (final DataAccessException e) {
throw new PreventedException("SQL exception while executing query for " + username, e);
}
return createHandlerResult(credential, new SimplePrincipal(username), null);
}
public void setSql(final String sql) {
this.sql = sql;
}
}
ここのパスワードは パスワード{ユーザー名} 暗号化の方式、だからカスタマイズのパスワードを使って検査して、再起動して、テストは合格します
3.クライアント側の構成
3.1一般方式
testwebプロジェクトを新規作成し、ClientエンジニアリングWEB-INF/libの下にcas-client-core-3.2.1.jarパッケージを追加
web.xml :
testWeb1
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
serverName
http://localhost:8080
CAS Single Sign Out Filter
org.jasig.cas.client.session.SingleSignOutFilter
CAS Authentication Filter
org.jasig.cas.client.authentication.AuthenticationFilter
casServerLoginUrl
https://localhost:8080/cas/login
CAS Validation Filter
org.jasig.cas.client.validation.Cas10TicketValidationFilter
casServerUrlPrefix
https://localhost:8080/cas
redirectAfterValidation
true
CAS HttpServletRequest Wrapper Filter
org.jasig.cas.client.util.HttpServletRequestWrapperFilter
CAS Assertion Thread Local Filter
org.jasig.cas.client.util.AssertionThreadLocalFilter
CAS Single Sign Out Filter
/*
CAS Authentication Filter
/*
CAS Validation Filter
/*
CAS HttpServletRequest Wrapper Filter
/*
CAS Assertion Thread Local Filter
/*
org.jasig.cas.client.session.SingleSignOutHttpSessionListener
HelloWorldExample
servlets.HelloWorld
HelloWorldExample
HelloWorldExample
ここではHelloWorld servletを設定してテストに合わせます
public class HelloWorld extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
AttributePrincipal principal = (AttributePrincipal) request.getUserPrincipal();
String username = principal.getName();
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println("Hello World ");
out.println("");
out.println("");
out.println("Hello World!"+username+"");
out.println("");
out.println("");
}
}
訪問localhost:8080/testWeb 1/HelloWorldExample ,最初のいずれかのページにアクセスすると、
https://localhost:8080/cas/login認証を行う
3.2 spring方式
ここではspring securityとcasを組み合わせた方法を採用します
具体的なspring securityはcasの構成と結合して、参考にすることができますhttp://5148737.blog.51cto.com/5138737/1827795