Java Security
Three sets of packages are part of the fundamental security and cryptopraphy features of the Java platform:
- Java Cryptography Extension (JCE)
- The Java Cryptography Extension (JCE) is a set of packages that provide a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithms.
- Java Secure Socket Extension (JSSE)
- The Java Secure Socket Extension (JSSE) is a set of packages that enable secure Internet communications. It implements a Java technology version of Secure Sockets Layer (SSL) and Transport Layer Security (TLS) protocols. It includes functionality for data encryption, server authentication, message integrity, and optional client authentication. JSSE has two releases: integrated into the JDK 1.4 and later, JSSE 1.0.3_03 as optional package to the Java 2 SDK versions 1.2.x and 1.3.x.
- Java Authentication and Authorization Service (JAAS)
- The Java Authentication and Authorization Service (JAAS) is a set of APIs that enable services to authenticate and enforce access controls upon users. It implements a Java technology version of the standard Pluggable Authentication Module (PAM) framework, and supports user-based authorization. Originally introduced as an optional package (JAAS 1.0) to version 1.3 of the Java 2 SDK, JAAS was been integrated into the J2SE since JDK version 1.4.
-
Java SE Security
Java security technology includes a large set of APIs, tools, and implementations of commonly used security algorithms, mechanisms, and protocols. The Java security APIs span a wide range of areas, including cryptography, public key infrastructure, secure communication, authentication, and access control. Java security technology provides the developer with a comprehensive security framework for writing applications, and also provides the user or administrator with a set of tools to securely manage applications.
Recent security enhancements include integration of the JCE, JSSE, and JAAS features into the JDK rather than them being delivered as optional packages, and addition of new security features. -
Java 6 SE JDK Security-related APIs & Developer Guides
From Sun Microsystems. Programmer's Guides: General Security, Java Authentication and Authorization Service (JAAS), Java Cryptography Architecture (JCA) and Extension (JCE), Java Generic Security Services (Java GSS-API), Java PKCS#11 Reference Guide, Java Secure Socket Extension (JSSE), Public Key Infrastructure (PKI), Simple Authentication and Security Layer (SASL), XML Digital Signature.
API Specification (javadoc): General Security, Certification Path, JAAS, Java GSS-API, JSSE, Java SASL, SSL/TLS-based RMI Socket Factories, XML Digital Signature, Smart Card I/O.
Java 6 Security Enhancements, Security Tools, Security Tutorials.
Security on JDK 5.0. Security on Java 2 SDK SE v1.4.2. -
Java Security
Javapedia, java.net TWiki. -
Oracle Phaos Security SDKs
Oracle Corporation has acquired Phaos Technology Corporation to incorporate Phaos' industry leading security technology into the Oracle Application Server and Oracle Identity Management products.
Cryptography - JCA & JCE
The Java Cryptography Extension (JCE) is a set of packages that provide a framework and implementations for encryption, key generation and key agreement, and Message Authentication Code (MAC) algorithms. Support for encryption includes symmetric, asymmetric, block and stream ciphers. The software also supports secure streams and sealed objects.
JCE was previously an optional package (extension) to the Java 2 SDK, Standard Edition (J2SE), versions 1.2.x and 1.3.x. JCE has now been integrated into the Java SDK, v1.4 and further.
JCE 1.2 was created to extend the Java Cryptography Architecture (JCA) APIs available in the Java 2 platform, and was available within the U.S. and Canada only, subjected to U.S. export control regulations. The primary difference between JCE 1.2 and JCE 1.2.2 is that JCE 1.2.x is exportable outside the U.S. and Canada. JCE integrated into the Java 2 SDK v1.4 is exportable. JCE providers may also be exportable.
-
Java Cryptography Architecture (JCA) Reference Guide
for the Java Platform Standard Edition 6.
Java Cryptography Extension (JCE) Reference Guide for the JDK 5.0.
Installing JCE Providers for the Java 2 SDK, v 1.4. How to Implement a Provider for the Java Cryptography Extension in the Java 2 SDK, Standard Edition, v 1.4.
J2SE 1.4.2 API docs: Package javax.crypto. -
Legion of the Bouncy Castle
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms, developed by the Legion of the Bouncy Castle, formerly OpenJCE.org. This software is open-source, distributed under a license based on the MIT X Consortium license.
The Bouncy Castle Crypto APIs consist of the following: A lightweight cryptography API in Java; A provider for the JCE and JCA; A clean room implementation of the JCE 1.2.1; Generators for Version 1 and Version 3 X.509 certificates and PKCS12 files; Generators for S/MIME and CMS (PKCS7); A signed jar version suitable for JDK 1.4 and the Sun JCE. -
IBM JCE
By IBM. IBMJCE Provider - Java Cryptography Extension (JCE) 1.2.1. The IBM version of JCE provides more algorithms than the Sun version.
IBMJCE4758: JCE with Hardware Cryptography support. -
Cryptix
Cryptix is an international volunteer effort to produce robust, open-source cryptographic software libraries. Cryptix products are free, both for commercial and non-commercial use and are being used by developers all over the world. Development is currently focused on Java. -
ISNetworks S/MIME & JCE Provider
This is ISNetworks open source cryptographic service provider for Java. It includes implementations of many cryptographic algorithms in the ISNetworks JCE Provider (signed), and works under JDK 1.2.2 or newer.
By ISNetworks. Although their Java S/MIME library is no longer officially supported, they have released it under the Apache license to make it available to the public. The download includes the full source code, pre-compiled binaries, JavaDoc for the API and examples of how to use the library.
Pinatubo JCE/JCA Provider: Java library which provides developers with programmatic access to Windows CryptoAPI. Pinatubo contains compliant providers for the Java Cryptography Architecure (JCA) and Java Cryptography Extension (JCE). The library is no longer officially supported, but ISNetworks have released the binaries under the Apache license and a full source release may follow. You can download it and use it free of charge. -
JCE taglib
Cryptographic tag library & Expression Language functions for JavaServer Pages (JSP).
By Gert Van Ham, open source LGPL license. SourceForge project: jcetaglib. -
Assembla JCE Provider for Microsoft key store
By Assembla Trust Technology AB. This software is provided free of charge and is available for use both in educational, personal and commercial use. Take this as a gift to the community who develops Java programs on the Windows platform. -
JHBCI, OpenSource HBCI Toolkit for Java
By Uwe Günther. JHBCI Provider (JCA/JCE crypto provider). -
Phaos Crypto (Commercial)
Pure Java cryptographic library with seamless integration with JCE applications. Commercial product, by Phaos Technology Corporation. -
RSA BSAFE (Commercial)
RSA BSAFE for Java Developers, RSA BSAFE Crypto-J (PDF) - Cryptographic components for Java, by RSA Security. Commercial product. Fast, flexible, hardware enabled, 100% pure Java, fully compliant with the Public-Key Cryptography Standards (PKCS), signed and exportable Java Security Provider. FIPS 140 certified (2002-2007). -
IAIK-JCE (Commercial)
IAIK Java Cryptography Extension (JCE) Toolkit. Commercial product. By IAIK - Institute for Applied Information Processing and Communication, Graz University of Technology. -
JCAPI (Commercial)
The Pheox JCAPI (Java CryptoAPI) is a JCE (Java Cryptography Extension) provider that provides access to key- and certificate stores on Microsoft operating systems. All cryptographic operations are performed by the native MS CAPI (Microsoft CryptoAPI) layer through installed CSPs (Cryptographic Service Provider) that supports cryptographic algorithms and functions. -
Java Applet for Signing with a Smart Card
By Svetlin Nakov and Nikolay Nedyalkov, 2006-02-24. Background, The Problem of Digital Signing in a Web-Based Environment with a Smart Card, Building a Smart Card Applet, Defining What Is Meant By "Smart Cards", Smart Card Access Standards, Accessing Smart Cards from Java, Using the Sun PKCS#11 Provider, Configuring the Sun PKCS#11 Provider, Static Registration of the Sun PKCS#11 Provider, Dynamic Registration of the Sun PKCS#11 Provider, Configuration File of the Sun PKCS#11 Provider (pkcs11.cfg), Using the Sun PKCS#11 Provider Without a Configuration File, Unregistering the Sun PKCS#11 Provider, Extracting a Keystore from a Smart Card, Obtaining Certificates and Private Keys from a Smart Card, Signing Data with a Smart Card, Java Applet for Signing with a Smart Card, System Requirements for Accessing Smart Cards with Java Applets, Implementation of the Applet for Signing with a Smart Card, How the Applet for Signing with a Smart Card Works, Compiling and Signing the Applet, Testing the Applet with a Sample HTML Form, The Applet for Signing with a Smart Card in Action, The Subsystem for Signature and Certificate Verification, The NakovDocumentSigner System, Download the NakovDocumentSigner System, Summary. Listings. -
PKCS#11 Signer For Java
Open source software project hosted at Sourceforge. -
Fast MD5 Implementation in Java
By Timothy W Macinta.
Public Key Infrastructure (PKI) & Digital Certificates
-
Legion of the Bouncy Castle
Bouncy Castle Crypto APIs include: A library for reading and writing encoded ASN.1 objects, Generators for Version 1 and Version 3 X.509 certificates and PKCS12 files, Generators/Processors for S/MIME and CMS (PKCS7), Generators/Processors for OCSP (RFC 2560), Generators/Processors for OpenPGP (RFC 2440). Free and open source. -
EJBCA, Java Certificate Authority
Enterprise Java Beans Certificate Authority (EJBCA) is a fully functional Certificate Authority (CA), written entirely in Java and based on J2EE technology. -
Cycom's Public Key Infrastructure (PKI)
Cycom's PKI with Java Source is a small subset of PKI just big enough to be useful, that leverages Sun's JCA. In particular it will allow a user application to generate digital certificates and certificate requests and allow the user to act as a CA, if only for other local users. -
NakovDocumentSigner
NakovDocumentSigner is a framework for digitally signing document for Java-based Web applications. It is freeware open-source project initiated by Svetlin Nakov and provides the Web applications with digital signature functionality based on Public Key Infrastructure (PKI). NakovDocumentSigner consists of a digital signer Java applet and a reference Web application for signature and certificate verification. It supports signing with a PKCS#12 certificate keystore file and with a smart card. -
Java Applet for Signing with a Smart Card
Article by Svetlin Nakov, 2006-02-24, on Developer.com.
Authentication - JAAS & Single Sign-On (SSO)
- jGuard
jGuard is a library that provides easy security (authentication and authorization) for Java web applications. It is built over the stable and mature JAAS framework, which is part of the Java SE APIs. jGuard is very flexible and allows several different ways to configure those mechanisms for authentication and authorization, i.e., in a relational database, XML files, or LDAP service. jGuard is open source project at SourceForge released under LGPL license. - OAuth
OAuth is an open protocol to allow secure API authentication in a simple and standard method from desktop and web applications.
For Consumer developers: If you're building desktop applications, dashboard widgets or gadgets, Javascript or browser-based apps, webpage widgets - OAuth is a simple way to publish and interact with protected data. It's also a safer and more secure way for people to give you access.
For Service Provider developers: If you're supporting web applications, server-side APIs, mashups - If you're storing protected data on your users' behalf, they shouldn't be spreading their passwords around the web to get access to it. Use OAuth to give your users access to their data while protecting their account credentials.
OAuth at Hueniverse, by Eran Hammer-Lahav: Explaining OAuth, 2007-09-10; Beginner's Guide to OAuth - Part I, 2007-10-04, and Part II, 2007-10-15. -
Spring Security
Spring Security provides powerful and flexible security solutions for enterprise applications developed using the Spring Framework. Formerly the Acegi Security System for Spring, Spring Security became an official Spring Portfolio project towards the end of 2007. It is a stable and mature product -- Acegi Security 1.0 was released in May 2006 after more than two and a half years of use in large production software projects. Open source. Spring Security (Acegi) provides Spring applications with instance-level ACL access control, channel security and human user detection capabilities. Acegi Security can authenticate using a variety of pluggable providers, and can authorise both web requests and method invocations.
What's New in Spring Security 2?, by Ben Alex, Acegi/Spring Security creator, 2007-12-06. Spring Security 2.0 Final Release: No More Dead Fairies, by Rod Johnson, 2008-04-17.
Pathway from ACEGI to Spring Security 2.0, by Chris Baker, Javalobby, 2008-04-22. -
OAuth for Spring Security
The purpose of this project is to provide an OAuth implementation for Spring Security. Support is provided for both OAuth provider developers and OAuth consumer developers.
Tutorial.
JAAS - Java Authentication and Authorization Service
The Java Authentication and Authorization Service (JAAS) is a package that enables services to authenticate and enforce access controls upon users. It implements a Java version of the standard Pluggable Authentication Module (PAM) framework, and supports user-based authorization. JAAS has been integrated into the Java 2 SDK, Standard Edition, v 1.4.
-
Introduction to JAAS and Java GSS-API Tutorials
Java SE 5.0, Java Authentication and Authorization Service (JAAS). The Java GSS-API contains the Java bindings for the Generic Security Services Application Program Interface (GSS-API) defined in RFC 2853. -
Java 6 SE Security: JAAS
- JAAS Reference Guide
- JAAS Tutorials: JAAS Authentication, JAAS Authorization.
-
JAAS
LoginModule
Developer's Guide - Java GSS-API and JAAS Tutorials for Use with Kerberos
JAAS Reference Guide for the Java 2 SDK, Standard Edition, v 1.4. -
Introduction to JAAS and Using JAAS
Sun Java Developer Connection (JDC) Tech Tips, July 27, 2001. This issue covers the Java Authentication and Authorization Service (JAAS). It introduces some key concepts in JAAS and shows you how to make use of these concepts. -
Using JAAS for Authorization & Authentication
TheServerSide.COM, Enterprise Java Community article, August 2002.
How JAAS enables use of custom security repositories with J2EE applications, contributed by Pramati.
The Power of JAAS: Security System Alternatives, by Frank Teti, October 2005. -
Java authorization internals
A guided tour of the Java 2 platform and JAAS authorization architectures. By Abhijit Belapurkar, Senior Technical Architect, Infosys Technologies Limited. IBM developerWorks Java tecnhology, 04 May 2004.
Extend JAAS for class instance-level authorization, by Carlos Fonseca, Software Engineer, IBM, 01 Apr 2002. -
JAAS Security in Action
By Kyle Gabhart, November 7, 2002, DevX.com. -
All that JAAS
By John Musser and Paul Feuer, September 13, 2002, Java World. -
High Level Java: Advanced Authentication in WebSphere Application Server
Extending JAAS. By Keys Botzum; Bill Hines; Paul Ilechko; Messaoud Benantar. Dec. 28, 2005, Sys-Con Media. - JAAS Modules
This is a small collection of plug in modules for the JavaTM Authentication and Authorization Service (JAAS) implementation, source code is released under the GNU LGPL (Lesser General Public License). It includes a version of Tomas Restrepo's WSSPI library that jumps through all the hoops that the must be jumped through to authenticate a user under Win32.
SSO - Single Sign-On
-
Open Web SSO - OpenSSO
The opensso project is based on the code base of Sun Java System Access Manager product, a core identity infrastructure product offered by Sun Microsystems. Licensend under CDDL 1.0.
First to Open Source Web Single Sign-On, Sun Microsystems, July 13, 2005.
Best Practices Guide for Enabling Single Sign-On with Sun Java System Access Manager, June 17, 2004.
Securing Applications With Identity Services, Part 1: Authentication, by Aravindan Ranganathan and Marina Sum, 2007-10-11, Sun Developer Network (SDN). - Java Open Single SignOn - JOSSO
-
Open Source Identity Management Solutions Written in Java
By Manageability. -
The Host Container - Single Sign On Valve
Apache Tomcat 5.5 Configuration Reference. The Valve Component - Single Sign On Valve. -
J2EE security: Container versus custom
Choose the appropriate type of security for your application. By Brian Pontarelli, July 26, 2004, JavaWorld. -
Implementing single sign-on with a Tomcat valve
Article by Simon Brown, 4 November 2004. -
JBoss.com Wiki - Single Sign On
Web Tier Single Sign-On on JBoss AS: Non-Clustered SSO using Tomcat SSO (beginning with JBoss-3.2.3), Clustered SSO using JBossCache (beginning with JBoss-3.2.4). -
Simplify enterprise Java authentication with single sign-on
Design secure client/server Java applications that use GSS-API and Kerberos tickets to implement SSO. By Faheem Khan, IBM developerWorks, 09 Sep 2003. -
Implement Single Sign-on with JAAS
By James Tao, October 21, 2002, DevX.com. - See: Security: Applications: Single Sign-On (SSO)
- See: PAM - Pluggable Authentication Modules