JAAS's most classic article: User Authentication and Authorization In The Java (TM) Platform

xiaoxiao2021-03-06  76

[

Published in the process of the 15th Annual Computer Security Applications Conference, Phoenix, AZ, December 1999]

User Authentication and Authorization In the Java (TM) Platform

Charlie Lai, Li Gong, Larry Koved, Anthony Nadalin, And Roland Schemers

Charlie.lai, li.gong @ sun.com

Sun Microsystems, Inc.

Koved, DRSecure @ US.ibm.com

INTERNATIONAL Business Machines, Inc.

Schemers@onebox.com

Onebox.com

Abstract

Java (TM) Security Technology Technology Originally Focused On Creating A

Safe Environment In Which To Run Potentially Untrusted Code Downloaded

From the public network. with the late release of the java (tm)

Platform (THE JAVA (TM) 2 Software Development Kit, V 1.2),

Fine-grained Access Controls Can Be Placed Upon Critical Resources

With regard to the Identity of the Running Applets and Applications,

Which are distinguished by where the code came from and who signed it.

However, The Java Platform Still Lacks The Means To Enforce Access

Controls based on the Identity of The User Who Runs The code.

In this paper, We describe the design and ustement of the

Java (TM) Authentication and Authorization Service (JaaS),

A Framework and Programming Interface That Augments The Java (TM)

Platform with Both User-Based Authentication and Access Control

Capabilities.

Introduction

THE JAVA (TM) Technology [8,12] Emerge in 1995 with a prosnently

Stated Goal of Providing A Safe Programming Environment. This Means

That Java Security Must Provide A Secure, Readily-Built Platform

On Which To Run Java Enabled Applications. It Also Means That

Java Security Must Provide Adequate and Extensive Security Tools and

Services IMPLEMENTED in Java Technology That Enable Independent

Software Vendors (ISVS) To Build A Wider Range of Security-SensitiveApplications, for Example, In the Enterprise World.

The Latest Release of The Java Platform (Java 2) Introducture A

New Security Architecture [7] That Uses a security policy to decide

The Granting of Individual Access Permissions to Running Code

(According to the code's characteristics, e.g., Where the code is

Coming from and WHETER IT IS DIGITALLY SIGND AND IF SO BY WOM).

Future Attempts to Access Protected Resources Will Invoke Security

Checks That Compare The Grand Permissions with The Permissions

Needed for the attempted access. if The former incrudes the latter,

Access is permitted; OtherWise, Access is Denied.

Such a Code-Centric Style of Access Control Is Unusual in That

Traditional Security MeasureS, Most Commonly Found in Sophistated

Operating Systems, Are User-Centric In That The Apply Control on The

Basis of who is running an application and not on the basis of which

Application IS Running. One Major Rational Behind Code-CENTRIC

Access Control Is That When a User Uses A Web Browser To Surf The Net

And Runs Executable Content (E.G., Mobile Code Written in Java) AS

Needed, The User Variable Remains Essentially Constant. on The Other

Hand, The User May Trust One Piece of Mobile Code More Than Others and

Would Like to Run this code with more privileges. thus it is in fact

Natural to Control The Security of Mobile Code in A Code-Centric

STYLE.

Nevertheless, IT Is Obvious That Java Is Becoming Widely Used in A

Multi-user environment. for example, An Enterprise Application OR

A Public Internet Terminal Must Deal with Different Users, Either

Concurrently Or Sequentially, And Must Grant these Uses Different

Privileges based on their identities. The Java Authentication Andauthorization Service (JaaS) Is Designed to Provide A Framework and

Standard Programming Interface for Authenticating Users and for

Assigning Privileges. TOGETHER with JAVA 2, An Application CAN

Provide Code-Centric Access Control, User-Centric Access Control,

OR a Combination of Both.

The rest of the paper is Organized As Follows. Sections 2 and 3

Introduce The Basic Concepts Used by Jaas. Section 4 Describes the

Authentication Model Implement by Jaas. Section 5 Describes the

Authorization Framework for Jaas, and is Broken Up INTO SEVERAL

Subsections. Section 5.1 Defines the JaaS User-Based Security Policy,

Section 5.2 Covers The Jaas Access Control Implementation,

And Section 5.3 Discusses Scalability Issues Regarding The

Security Policy. Security 6 Discusses The Issue of Logging Into The

Java Virtual Machine. Section 7 Follows with a summary.

2 Subjects and Principals

Users offend on computing services to assist them in Performing

Work. Furthermore Services Themselves Might Subsequently Intect

WITH Other Services. Jaas Uses The Term, Subject, To Refer to Any

User of a computing service [9,17]. Both Users and Computing Services,

THEREFORE, REPRESENT SUBJECTS. To Identify The Subjects with Which IT

Interacts, a Computing Service Typically Relies on names. However,

Subjects Might Not Have The Same Name for Each Service and in Fact,

May Even Have a Different Name for Each Individual Service.

THE TERM, Principal, Represents a name associated with a

Subject [11,17]. Since Subjects May Have Multiple Names

(Potentially One for Each Service with Which it interacts),

A Subject Comprises a set of principals. See Figure 1.public Interface Principal {

Public string getname ();

}

Public final class suject {

Public set getprincipals () {}

}

Figure 1: Subject Class and Principals

Principals Can Become Associated with a Subject Upon Successful

Authentication to a service. Authentication represents

The process by Which One Subject Verifier the Identity of Another,

And Must Be Performed in a Secure Fashion; OtherWise a Perpetrator MAY

Impersonate Others to Gain Access to a System. Authentication

Typical INVOLVES The Subject Demonstrating Some Form of evidency to

Prove ITENTITY. SUCH Evidence May Be Information Only The Subject

Would Likely Know or Have (a Password or fingerprint), or it may be

Information Only The Subject Could Could Produce (Signed Data Using A

Private key).

A Service's Reliance ON Named Principals Usually Derives from

The Fact That IT IT ITMENTS A ConvertIal Access Control Model of

Security [10]. this model allows a service to define a set of

Protected resources as well as the conditions under which

Named Principals May Access Those Resources. Recent Studies

(Policymaker [4] and SPKI [5]) Have Focused on the limitations of using

Conventional Names in Large Distributed Systems for Access Control,

And Note That Public Keys, INSTEAD, Province A More Practical and PRACTIN

Scalable name representation. Jaas, And SPKI As Well, Do Not Impose

Any Restrictions on Principal Names. Localized Environments That Have

Limited Namespaces, or That Do Not Rely On Public Key Cryptography,

May Define Principals That Have Conventional Names.

Large-scale distributed systems may use principals what allow

The Principal Name To Be a public key (Encoded as a hex string, as in policymaker).

3 Credentials

Some Services May Want To Associate Other Security-Related Attributes

And Data With a Subject in Addition to Principals. Jaas Refers To

Such Generic Security-Related Attributes as Credentials. a Credential

May Contain Information Used to Authenticate the Subject to New

Services. Such Credentials Include Passwords, Kerberos Tickets [16],

And public key certificates (X.509 [9], PGP [21], ETC.),

And is used in Environments That Support Single Sign-ON.

Credentials Might Also Contain Data That Simply Enables

The Subject To Perform Certain Activities. Cryptographic Keys, for

EXAMPLE, REPRESENT CREDENTIALS That Enable the Subject To Sign OR

Encrypt Data. Jaas Credentials May Be Any Type Of Object. Therefore,

EXInship Credential Implementations (java.security.cert.certificate,

For example) Can Be Easily Incorporated Into Jaas. Third-Party

Credential Implementations May Also Be Plugged Into The Jaas

Framework.

Jaas Credential Implementations Do Not Necessarily Have to Contain

The Actual Security-Reference Data; They Might SIMPLY REFERENCE The DATA.

This Occurs When The Data Must Physically Reside on a Separate Server,

Or Even Possibly in Hardware (Private Keys ON A Smart Card,

For instance). Also, Jaas Does Not Impose Any Restrictions

Regarding Credential Delegation To Third Parties. Rather IT Allows

Each Credential Implementation To Specify ITS OWN Delegation Protocol

(As Kerberos Does), or Leaves Delegation Decisions Up to the

Applications.

Jaas Divides Each Subject's Credentials Into Two Sets. One Set Contains

The Subject's Public Credentials (Public Key Certificate, Kerberos

Tickets, ETC). The Second Set Stores The Subject's Private Credentials (Private Keys, Encryption Keys, Passwords, etc). To Access A Subject's

Public Credentials, No Permissions Are Required. However, Access

To a Subject's Private Credential set is security checked.

See Figure 2.

Public final class suject {

...

Public set getpubliccredentials () {} // not security checked

Public set getprivatecredentials () {} // security checked

}

Figure 2: Subject Class and Credentials

4 Pluggable and Stackable Authentication

Depending On The Security Parameters of a Particular Service,

DiffERENT KINDS OF Proof May Be Required for Authentication.

The Jaas Authentication Framework Is Based on Pam [18, 20],

And therefore supports an Architecture That Allows System

Administrators to Plug in the appropriate authentication

Services to meet their security requests. The architecture

Also Enables Applications to Remain Independnt from the underlying

Authentication Services. Hence As New Authentication Services Become

Available or As Current Services Are Updated, System Administrators

Can Easily Plug Them in With Having to Modify or Recompile EXISTING

Applications.

The Jaas LoginContext Class Represents a Java Implementation of To

Pam framework. The LoginContext Consults a configuration That

DETERMINES The Authentication Service, or Loginmodule, That Get

Plugged in Under That Application (See Figure 3).

The Syntax and Details of the Configuration Are Defined by Pam.

Public Final Class LoginContext {

Public logincontext (String name) {}

Public void login () {} // Two Phase Process

Public void logout () {}

Public Subject GetSubject () {} // get the authenticated subject

}

Public interface loginmodule {boolean login (); // 1st Authentication Phase

Boolean commit (); // 2nd authentication phase

Boolean Abort ();

Boolean Logout ();

}

Figure 3: LoginContext Class and Loginmodule Interface

Jaas, Like Pam, Supports the notion of stacked loginmodules.

To Guarantee That Either All Loginmodules Chengceed or None succeed,

The LoginContext Performs The Authentication Steps in Two Phases.

In The First Phase, or the 'login' Phase, The LoginContext Invokes The

Configured loginmodules and instructs each to attempt the

Authentication only. if all the nextary loginmodules successfully

PASS this Phase, The LoginContext Then Enters the second phase and

Invokes the Configured Loginmodules Again, Instructing Each To Formally

'commit' The Authentication Process. During this Phase EACH

Loginmodule Associates The Relevant Authenticated Principals and

Credentials with the subject. if Either the first phse or the

Second Phase Fails, The LoginContext Invokes The Configured

Loginmodules and instructs each to 'Abort' The Entire Authentication

Attempt. Each Loginmodule Then Cleans Up Any Relevant State They Had

Associated with the Authentication Attempt.

In Addition to Jaas, The Generic Security Services Application

Programmer's Interface (GSS-API) and Simple Authentication and

Security Layer Application Programmer's Interface (SASL) [13,14]

Define Frameworks That Provide Support for Pluggable Authentication.

However, The GSS and SASL Authentication Frameworks

Are Designed Specifically for Network Communication Protocols and,

As Such, Provide Additional Support for Securing Network Communications

After Authentication Has Completed. While JaaS Does AccommodateGeneral Network-based Authentication Protocols (Including

Needham-Schroeder And Eke [15, 2]) It also focuses on addressing the

Need to Support Pluggable Authentication In Stand-Alone Non-Connection

Oriented environments.

5 Authorization

Once Authentication Has SuccessFully Completed, JaaS Provides

The Ability To Enforce Access Controls Upon The Principals Associated

With the authenticated subject. The Jaas Principal-based Access

Controls (Access Controls Based On WHO Runs Code) Supplement THE

EXInship Java 2 Codesource-Based Access Controls

(Access Controls Based On Where code Came from and who signed it).

5.1 Principal-Based Access Control

As Stated Earlier, Services Typically Implement The Access Control

Model of Security, Which Defines a set of protected resources,

As Well as the conditions under which named Principals

May Access Those Resources. Jaas Also Follows this model,

AND Defines a security policy to specify what resources is accessible

To Authorized Principals. The Jaas Policy Extends the EXIXG

Default Java 2 Security Policy, And in Fact, The Two Policies, Together,

Form A Single Logical Access Control Policy for the Entire Java Runtime.

Figure 4 Depicts an Example Codesource-based Policy Entry

Currently Supported by The Default Policy Provided with Java 2.

This entry grants code loaded from 'foo.com', and Signed by 'foo',

Permission to read all files in the 'CDROM' Directory and ITS

Subdirector. Since no Principal Information Is Included

With this policy entry, The code will always becomle to read files

From The 'CDROM' Directory, Regardless of Who Executes IT.

// java 2 codesource-based policygrant code "http://foo.com", signcy "foo" {

Permission java.io.filepermission "/ CDROM / -", "Read";

}

Figure 4: CoDesource-based Policy Entry

Figure 5 Depicts an Example Principal-Based Policy Entry

Supported by Jaas. This Example Entry GRANTS CODE LOADED

'bar.com', Signed by 'Bar', And Executed by 'Duke',

Permission to read Only Those Files Located In The '/ CDROM / DUKE'

Directory. To be elected by 'duke', The Subject Affiliated with The

Current Access Control Context (See Section 5.2) Must Have An Associated

Principal of class, 'bar.principal', whose 'getname' Method Returns,

'duke'. Note That if the code from 'bar.com', Signed by 'Bar',

Ran Stand-Alone (it is not executed by 'duke'),

Or if The code was executed by anyprincipal other than 'duke',

The IT Would Not Be Grand The FilePermission.

Also Note That if The Jaas Policy Entry Did NOT Specify

The CodeBase or Signedby Information, THE Entry's FilePermission

Would Be graduated to any code running as 'duke'.

// jaas principal-based policy

Grant Codebase "http://bar.com, signby" bar ",

Principal bar.principal "duke" {

Permission java.io.filepermission "/ CDROM / DUKE / -", "Read";

}

Figure 5: Principal-based Policy Entry

Jaas Treats Roles and Groups Simply As Named Principals [10].

Thereforefor Access Control Can Be Imposed Upon Roles and Groups Just

As they area..............

See Figure 6.

// An Administrator Role CAN Access User Passwords

Grant Principal foo.role "administrator" {

Permission java.io.filepermission "/ passwords / -", "read, write";

// a Basketball Team (Group) Can Read ITS Directory

Grant Principal foo.team "slamdunk" {

Permission java.io.filepermission "/ teams / slamdunk / -", "read";

}

Figure 6: role-based and group-based policy entries

For flexibility, The Jaas Policy Also Permits

Principal Class Specified in A Grant Entry To

Be a Principalcomparator (The Class Implements The Principalcompaute

Interface). The Permissions for Such Entries Are Grand to Any Subject

That The Principalcomparator Implies. See Figure 7.

Public interface principalcomparator {

Boolean Implies (Subject Subject);

}

// regular users CAN Access A Temporary Working Directory

Grant Principal Bar.Role "user" {

Permission java.io.filepermission "/ TMP / -", "Read, Write";

}

Figure 7: Principalcomparator Interface and Example Policy Entry

Figure 7 Demonstrates How Principalcomparators Can Be Used

To Support Role Hierarchies [19]. in this Example

Assume That An Administrator Role Is Senior To a User Role and As Such,

Administrators inherit all the permissions granted to regular users.

To Accommodate this hierarchy, 'bar.role' Must SIMPLY IMPLEMENT

The Principalcomparator Interface, And ITS Implies Method MUST

Return, True, IF The Provided Subject Has An Associated

"administrator" role principal. Note That Although The Jaas Policy

Supports role hierarchies via the Principalcomparator Interface,

Administrators Are Not Limited by It. JaaS Can Accommodate

Alternative role-based Access Control Mechanism (Such as this deined

In [6]), As long as the alternative access controls can be be expressed

Either through the existing java 2 policy or the new jaas policy.5.2 access control importation

The Java 2 Runtime Enforces Access Controls Via The THE

Java.lang.securityManager, and is consuled any time untrusted code

Attempts to Perform A Sensitive Operation (Accesses to the Local File

System, for example). To Determine WHether The Code Has Sufficient

Permissions, The SecurityManager Implementation Delegates

Responsibility to the java.security.accessController,

Which first Obtains An Image of the Current AccessControlContext,

AND THEN Ensures That The Retrieved AccessControlContext Contains

Sufficient Permissions for the Operation To Be Permitted.

Jaas Supplements this architecture by providing the method,

Subject.doas, to Dynamically Associate An Authenticated Subject

With the capital accesscontrolcontext. Hence, as subsequent access

Control Checks Are Made, The AccessController Can Base ITS Decisions

Upon Both the Executing Code Itself, and Upon The Principals

Associated with the Subject. See Figure 8.

Public final class suject {

...

// Associate the Subject with the current

// AccessControlContext and Execute the Action

Public Static Object Doas (Subject S,

Java.security.privilegedaction action) {}

}

Figure 8: SUBJECT DOAS Method

To illustrate a usage scenario for the doas method,

Consider WHEN a Service Authenticates a Remote Subject,

And the Performs Some Work on Behalf of That Subject. for security

Reasons, The Server SHOULD Run in An AccessControlContext Bound

By The Subject's Permissions. Using Jaas, The Server Can Ense

this by prepaaring the work to be performed as a

Java.security.privilegedaction, and kil in invoking the doas method,

Providing Both The Authenticated Subject, As Well As The PreparedPrivilegedAction. The Doas Implementation Associates The Subject with

The Current AccessControlContext and the executes the action.

When Security Checks Occur During Execution, The Java 2 SecurityManager

Queries the jaas policy, updates the current accessControlContext

With the permissions granted to the Subject and the executing

CoDesource, and then Performs Its Regular Permission Checks.

When a an action finally completion, The doas method Simply Removes

The Subject from The Current AccessControlContext,

And Returns The Result Back to the Caller.

To Associate a Subject with The Current AccessControlContext,

The Doas Method Uses An Internal Jaas Implementation of To

Java.security.domaincombiner interface, Newly Introduces IN

Version 1.3 of the Java 2 SDK. It is through the jaas domaincombiner

That The EXISTING JAVA 2 SecurityManager Can Be Instructed To Query

The Jaas Policy without Requiring Modifications to the SecurityManager

ITSelf. Details of The Intertion Between The Java 2 SecurityManager

And Domaincombiners Are Documented in The Javadocs for the THE

Java.security.domaincombiner interface.

Section 5.3 Scalability of the Access Control Policy

The Jaas Principal-Based Access Control Policy WAS INTENTIONALLY

Designed to be consistent with the existing code-based policy

In The Java 2 Platform. The Default Policy Implementations Provided

With Both Java 2 and Jaas Reside In a local file, and assume That All

Policy Decisions Can Be Defined and Made Locally. Obviously,

This Design Does Not Scale Beyond Small Localized Environments.

Keynote [3] and SPKI Both Address The Limitations of Such

Access Control Designs, and Discuss Alternative Solutions Thatenable The Delegation of Policy Responsibilities To Certified

3rd parties. By Delegating Policy-Making Responsibilities,

Access Control Policies Can Easily Scale To Serve Larger Systems.

To Improve Scalability, Both The Java 2 and Jaas file-based policy

Implementations Can Be Replaced with Alternative Implementations

That Support Delegation. this is achieved by specifying the

Alternative importations in the 'java.security' Properties file

Located in the lib / security subdirectory from Where the java runtime

Environment WAS Installed. The Designs of Potential Alternative

Implementations Are Beyond The Scope of this Paper.

Section 6 logging in To the Java Virtual Machine

With support from the jaas framework, The Java Virtual Machine (VM)

Can Be Augment TO Provide a General Login facility for users.

This Would Enable The VM Itself to Impose Access Controls Based On WHO

Logged in. in Fact, [1] Investigates and Describes the constructs

Necessary to Support a Multi-User Environment Withnin A VM.

In Such An Environment, Individual Users Log Into the VM and Are

Each Given An Execution Shell in Which To Launch Commands and

Applications (Similar TO UNIX). The VM Imposes Access Controls

Based on the Identity of The User, and Special Userpermissions

May Be Grand to Code Running As a Particular User To Permit Access

TO Particular Resources.

Jaas Can Serve As the underlying Authentication Architecture

For Such a System. Also, The Environment Described in [1]

Focuses On User-Based Authentication and Access Control from

The Point of View of The Java Virtual Machine. The Jaas Framework

Supplyments this environment by providing the support Necessary Fortevelopers to build the Same User-based authentication and

Access Control Capabilities Into Their Own Applications.

Section 7 Summary and Future Directions

In this paper, we have outlined the design and ustement of the

Java (TM) Authentication and Authorization Service (JaaS),

A framework and programing interface That Augments the

Java (TM) Platform with Both Pluggable Authentication and

Principal-based Access Control Capabilities, WITHOUT REQUIRING

Modifications to the Java 2 Core. Although Individual Pluggable

Loginmodules Can Be Written in Native Code, The Basic Jaas Framework

Can Be Written Entirely in Java. a prototype importation of the

Framework Has Been Developed, and is currently packaged as a

Java 2 Standard Extension Consisting of ApproxImately 25 Classes

Partitioned Into Four Packages.

AS Java Technology IS Used to Construct Not Just A Single Desktop But

A Full-Fledged Distributed System, A Whole New Range of Distributed

Systems Security Issues (Such As Those We Touch Upon in The

Introduction Chapter) Must Be Tackled. For Example, Additional

Mechanisms Are Needed to Make RMI Secure In The Presence of Hostile

Network attacks. for jini, service registration and location becoming

Securely Managed If The Environment Contains Coexisting But

Potentially Mutually Hostile Parties. There is a ful set of

Higher-Level Concepts and Services That Must Be Secured, Such

AS Transactions for Electronic Commerce. There Are Also Many

Lower-Level Security Protocols That We Can Leverage on, Such As

The NetWork Security Protocols Kerberos and IPv6. JaaS is a critical

Building block for all the release.

Section 8 Acknowledgementswe Are Grateful To Bob Scheifler for His Comments and Feedback ON

THE JAAS Architecture. We Also Thank Bruce Rich, Kent Soper,

Anat Sarig, Maryann Hondo, And David Edelsohn for Their Work in

Helping to Define Jaas' Functional Requirements, And for THEIR

Assistance in Testing and Documenting Jaas' Features.

Whitfield Diffie, Gary Ellison, Rosanna Lee, Jan Luehe, Peter Neumann,

Jeff Nisewanger, Jerome Saltzer, Fred Schneider, Michael Schroeder,

Scott Seligman, And Rob Weltman All Contributed to Early Jaas Designs.

Maxine Erlund Provided Management Support for the Jaas Project.

Sriramulu lakkaraju and Narendra Patil Wrote Product Tests for JaaS.

Scott hommel helped edit this paper.

References

[1] D. Balfanz and L. Gong. Experience with secure multi-processing

In Java. in Proceedings of ICDCS, Amsterdam, The Netherlands, May 1998.

[2] S. Bellovin and M. Merritt. Encrypted Key Exchange: Password-Based

Protocols Secure Against Dictionary Attacks. In Proceedings of The

IEEE SYMPOSIUM ON Research in Security and Privacy, Pages 72-84,

Oakland, California, May 1992.

[3] M. Blaze, J. Feigenbaum, And J. Lacy. Decentralized Trust Management.

In Proceedings of The IEEE Conference On Security and Privacy,

Oakland, California, May 1996.

[4] M. Blaze, J. Feigenbaum, And A. keryomytis. Keynote: Trust Management

For public-key infrastructure. Security Protocols INTERNATIONAL

Workshop, England, 1998.

[5] C.M. Ellison, B. Frantz, B. Lampson, R. Rivest, B.m. Thomas, and

T. Ylonen. SPKI CERTIFICATE. Internet Draft,

Internet Engineering Task Force, November 1998.

[6] L. Giuri and F.u. Bordoni. Role-based Access Control in Java.

In Proceedings of The 3rd ACM Workshop On Role-Based Access Control, Fairfax, Virginia, 1998.

[7] L. Gong, M. Mueller, H. Prafullchandra, And R. Schemers.

Going Beyond The Sandbox: An Overview of The New Security Architecture

In The Java (TM) Development Kit 1.2. in Proceedings of the UseNix

Symposium on Internet Technologies and systems, Pages 103-112,

Monterey, California, December 1997.

[8] J. Gosling, Bill Joy, And Guy Steler. The Java Language Specification.

Addison-Wesley, Menlo Park, California, August 1996.

[9] R. Housley, W. Ford, T. Polk, And D. Solo. Internet X.509 public Key

Infrastructure Certificate and CRL Profile. Request for Comments 2459,

Internet Engineering Task Force, January 1999.

[10] B. Lampson. Protection. ACM OPERATING SYSTEMS REVIEW,

8 (1): 18-24, January 1974.

[11] B. Lampson, M. Abadi, M. Burrows, And E. Wobber. Authentication in

Distributed Systems: Theory and practice. ACM Transactions on Computer

SYSTEMS, 10 (4): 265-310, November 1992.

[12] T. Lindholm and F. Yellin. The Java Virtual Machine Specification.

Addison-Wesley, Menlo Park, California, 1997.

[13] J. Linn. Generic Security Service Application Program Interface,

Version 2. Request for Comments 2078, Internet Engineering Task Force,

January 1997.

[14] J. MYERS. Simple Authentication and Security Layer (SASL).

Request for Comments 2222, Internet Engineering Task Force,

October 1997.

[15] R.M. Needham and M.d. Schroeder. Using Encryption for Authentication

In Large Networks of Computers. Communications of the ACM,

21 (12): 993-999, December 1978.

[16] B. C. Neuman and T. Ts'o. Kerberos: an Authentication Service for

Computer NetWorks. IEEE Communications, 32 (9): 33-38, September 1994.

[17] T. Ryutov and B.c. Neuman. Access Control Framework for DistributeDApplications. Internet Draft, Internet Engineering Task Force,

November 1998.

[18] V. Samar and C. Lai. Making Login Services Independent from

Authentication Technologies. In Proceedings of the sunsoft

Developer's Conference, March 1996.

[19] R.S Sandhu, E.J. Coyne, H.L. Feinstein, And C.E. Youman. Role-based

Access Control Models. IEEE COMPUTER, 29 (2): 38-47, February 1996.

[20] www.opengroup.org. X / Open Single Sign-On Service (xsso) - PLUGGABLE

Authentication. Preliminary Specification P702, THE OPEN Group,

JUNE 1997.

[21] P. Zimmerman. PGP User's Guide. Mit Press, Cambridge, 1994.

转载请注明原文地址:https://www.9cbs.com/read-93257.html

New Post(0)