diff options
author | Jack Magne <jmagne@dhcp-32-224.sjc.redhat.com> | 2012-03-09 13:15:02 -0800 |
---|---|---|
committer | Jack Magne <jmagne@dhcp-32-224.sjc.redhat.com> | 2012-03-12 17:27:11 -0700 |
commit | 1f759b5cb7aef73092a473c01cbec1928651c10a (patch) | |
tree | b24a5ab8ce2bf007ee046ed15d58336528095426 /pki/base/kra/shared/webapps | |
parent | 0bc851bff69ef174b11cf147aeb1289c43de0666 (diff) | |
download | pki-1f759b5cb7aef73092a473c01cbec1928651c10a.tar.gz pki-1f759b5cb7aef73092a473c01cbec1928651c10a.tar.xz pki-1f759b5cb7aef73092a473c01cbec1928651c10a.zip |
Provide Custom PKI JNDI Realm.
Provide a Realm that provides the following:
1. Allows SSL client certificate authentation upon protected URLs.
For now we are protecting the new DRM Rest functions.
2. Allows simple PKI ACL checking like we have in the current server.
This is accomplished with the help of a simple file that maps URLs
to ACL resourceIDs and operations.
3. DRMRestClient now support SSL Client authentication to test the feature.
How to test this:
Install new KRA server, after installing build pki-core rpm.
Uncomment "PKIJNDIRealm" settings in conf/server.xml
Some customization will be needed for instance specific info. See
the sample in server.xml.
Uncomment the "Security Constraint" and "login-config" settings webapps/kra/WEB-INF/web.xml
In running DRMTest.java in eclipse do the following:
Change the arguments to support SSL Client auth such as:
-h localhost -p 10443 -w secret -d ~/archive-test -s true -c "KRA Administrator of Instance pki-kra's SjcRedhat Domain ID"
where the new flags are -s = true for SSL and -c = <client auth cert name>
Export the KRA's admin/agent client auth cert from Firefox to a pk12 file.
Import this cert into ~/archive-test by using "pk12util" utility.
Run the DRMTest.java program in eclipse and observe the results. There should be a prompt
for a client cert.
Diffstat (limited to 'pki/base/kra/shared/webapps')
-rw-r--r-- | pki/base/kra/shared/webapps/kra/WEB-INF/auth.properties | 16 | ||||
-rw-r--r-- | pki/base/kra/shared/webapps/kra/WEB-INF/web.xml | 79 |
2 files changed, 94 insertions, 1 deletions
diff --git a/pki/base/kra/shared/webapps/kra/WEB-INF/auth.properties b/pki/base/kra/shared/webapps/kra/WEB-INF/auth.properties new file mode 100644 index 000000000..a206aa9e4 --- /dev/null +++ b/pki/base/kra/shared/webapps/kra/WEB-INF/auth.properties @@ -0,0 +1,16 @@ +# Restful API auth/authz mapping info +# +# Format: +# <Rest API URL> = <ACL Resource ID>,<ACL resource operation> +# ex: /kra/pki/key/retrieve = certServer.kra.pki.key.retrieve,execute + +/kra/pki/key/retrieve = certServer.kra.pki.key.retrieve,execute +/kra/pki/keyrequests = certServer.kra.pki.keyrequests,read +/kra/pki/keyrequest = certServer.kra.pki.keyrequest,read +/kra/pki/keyrequest/archive = certServer.kra.pki.keyrequest.archive,execute +/kra/pki/keyrequest/recover = certServer.kra.pki.keyrequest.recover,execute +/kra/pki/keyrequest/approve = certServer.kra.pki.keyrequest.approve,execute +/kra/pki/keyrequest/reject = certServer.kra.pki.keyrequest.reject,execute +/kra/pki/keyrequest/cancel = certServer.kra.pki.keyrequest.cancel,execute +/kra/pki/keys = certServer.kra.pki.keys,read +/kra/pki/config/cert/transport = certServer.kra.pki.config.cert.transport,read diff --git a/pki/base/kra/shared/webapps/kra/WEB-INF/web.xml b/pki/base/kra/shared/webapps/kra/WEB-INF/web.xml index 529aeadbc..c6e9934eb 100644 --- a/pki/base/kra/shared/webapps/kra/WEB-INF/web.xml +++ b/pki/base/kra/shared/webapps/kra/WEB-INF/web.xml @@ -1034,5 +1034,82 @@ <session-config> <session-timeout>30</session-timeout> </session-config> -</web-app> +<!-- Default login configuration uses form-based authentication --> +<!-- Security Constraint for agent access to the Security Data Rest Interface --> + +<!-- Uncomment to activate PKIJNDI realm as in conf/server.xml --> +<!-- +<security-constraint> + <display-name>KRA Top Level Constraint</display-name> + <web-resource-collection> + <web-resource-name>KRA Protected Area</web-resource-name> + <url-pattern>/pki/* + </url-pattern> + </web-resource-collection> + <user-data-constraint> + <transport-guarantee>CONFIDENTIAL</transport-guarantee> + </user-data-constraint> + <auth-constraint> + <role-name>*</role-name> + </auth-constraint> +</security-constraint> +--> + +<!-- Security Constraint to deny certain http methods for key/retrieve --> +<!-- Uncomment to activate PKIJNDI realm as in conf/server.xml --> +<!-- +<security-constraint> +<display-name>Key forbidden</display-name> +<web-resource-collection> + <web-resource-name>Key forbidden</web-resource-name> + <url-pattern>/pki/key/retrieve</url-pattern> + <http-method>GET</http-method> + <http-method>PUT</http-method> + <http-method>DELETE</http-method> +</web-resource-collection> +<auth-constraint/> +</security-constraint> +--> + +<!-- Security Constraint to deny certain http methods for keyrequest/* --> +<!-- Uncomment to activate PKIJNDI realm as in conf/server.xml --> + +<!-- +<security-constraint> +<display-name>KeyRequest forbidden</display-name> +<web-resource-collection> + <web-resource-name>KeyRequest forbidden</web-resource-name> + <url-pattern>/pki/keyrequest/archive</url-pattern> + <url-pattern>/pki/keyrequest/recover</url-pattern> + <url-pattern>/pki/keyrequest/approve/*</url-pattern> + <url-pattern>/pki/keyrequest/reject/*</url-pattern> + <url-pattern>/pki/keyrequest/cancel/*</url-pattern> + <http-method>GET</http-method> + <http-method>PUT</http-method> + <http-method>DELETE</http-method> +</web-resource-collection> +<auth-constraint/> +</security-constraint> +--> + + +<!-- Customized SSL Client auth login config + uncomment to activate PKIJNDI realm as in conf/server.xml +--> + +<!-- + +<login-config> + <realm-name>PKIJNDIRealm</realm-name> + <auth-method>CLIENT-CERT</auth-method> + <realm-name>Client Cert Protected Area</realm-name> +</login-config> + +<security-role> + <role-name>*</role-name> +</security-role> + +--> + +</web-app> |