8159544: Remove deprecated classes in com.sun.security.auth.**

Reviewed-by: jlahoda, vinnie, weijun
This commit is contained in:
Sean Mullan 2017-08-21 14:05:10 +00:00
parent d46142923c
commit f36db2dd00
24 changed files with 25 additions and 2016 deletions

@ -1,5 +1,5 @@
#
# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
# Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
@ -27,7 +27,6 @@
SUNWprivate_1.1 {
global:
Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo;
Java_com_sun_security_auth_module_UnixSystem_getUnixInfo;
local:
*;

@ -82,13 +82,13 @@ import sun.security.util.Debug;
*
* <pre>
* grant CodeBase "foo.com", Signedby "foo",
* Principal com.sun.security.auth.SolarisPrincipal "duke" {
* Principal com.sun.security.auth.UnixPrincipal "duke" {
* permission java.io.FilePermission "/home/duke", "read, write";
* };
* </pre>
*
* This <b><i>grant</i></b> entry specifies that code from "foo.com",
* signed by "foo', and running as a {@code SolarisPrincipal} with the
* signed by "foo', and running as a {@code UnixPrincipal} with the
* name, duke, has one {@code Permission}. This {@code Permission}
* permits the executing code to read and write files in the directory,
* "/home/duke".
@ -107,8 +107,8 @@ import sun.security.util.Debug;
* for that {@code Subject} to be granted the specified Permissions.
*
* <pre>
* grant Principal com.sun.security.auth.SolarisPrincipal "duke",
* Principal com.sun.security.auth.SolarisNumericUserPrincipal "0" {
* grant Principal com.sun.security.auth.UnixPrincipal "duke",
* Principal com.sun.security.auth.UnixNumericUserPrincipal "0" {
* permission java.io.FilePermission "/home/duke", "read, write";
* permission java.net.SocketPermission "duke.com", "connect";
* };

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,51 +95,6 @@ public class AuthResources extends java.util.ListResourceBundle {
"Kerberos username [{0}]: "},
{"Kerberos.password.for.username.",
"Kerberos password for {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": error parsing "},
{"COLON", ": "},
{".error.adding.Permission.", ": error adding Permission "},
{"SPACE", " "},
{"NEWLINE", "\n"},
{".error.adding.Entry.", ": error adding Entry "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"attempt to add a Permission to a readonly PermissionCollection"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "expected keystore type"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"can not specify Principal with a wildcard class without a wildcard name"},
{"expected.codeBase.or.SignedBy", "expected codeBase or SignedBy"},
{"only.Principal.based.grant.entries.permitted",
"only Principal-based grant entries permitted"},
{"expected.permission.entry", "expected permission entry"},
{"number.", "number "},
{"expected.expect.read.end.of.file.",
"expected {0}, read end of file"},
{"expected.read.end.of.file", "expected ';', read end of file"},
{"line.", "line "},
{".expected.", ": expected '"},
{".found.", "', found '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [Primary Group]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [Supplementary Group]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "provided null name"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_de extends java.util.ListResourceBundle {
"Kerberos-Benutzername [{0}]: "},
{"Kerberos.password.for.username.",
"Kerberos-Kennwort f\u00FCr {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": Parsefehler "},
{"COLON", ": "},
{".error.adding.Permission.", ": Fehler beim Hinzuf\u00FCgen der Berechtigung "},
{"SPACE", " "},
{".error.adding.Entry.", ": Fehler beim Hinzuf\u00FCgen des Eintrags "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"Es wurde versucht, eine Berechtigung zu einer schreibgesch\u00FCtzten PermissionCollection hinzuzuf\u00FCgen"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "Keystore-Typ erwartet"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"Principal kann nicht mit einer Platzhalterklasse ohne Platzhalternamen angegeben werden"},
{"expected.codeBase.or.SignedBy", "codeBase oder SignedBy erwartet"},
{"only.Principal.based.grant.entries.permitted",
"Nur Principal-basierte Berechtigungseintr\u00E4ge zul\u00E4ssig"},
{"expected.permission.entry", "Berechtigungseintrag erwartet"},
{"number.", "Nummer "},
{"expected.expect.read.end.of.file.",
"{0} erwartet, Dateiende gelesen"},
{"expected.read.end.of.file", "\";\" erwartet, Dateiende gelesen"},
{"line.", "Zeile "},
{".expected.", ": erwartet: \""},
{".found.", "\", gefunden: \""},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [Prim\u00E4rgruppe]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [Zusatzgruppe]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "Nullname angegeben"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_es extends java.util.ListResourceBundle {
"Nombre de usuario de Kerberos [{0}]: "},
{"Kerberos.password.for.username.",
"Contrase\u00F1a de Kerberos de {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": error de an\u00E1lisis "},
{"COLON", ": "},
{".error.adding.Permission.", ": error al agregar el permiso "},
{"SPACE", " "},
{".error.adding.Entry.", ": error al agregar la entrada "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"se ha intentado agregar un permiso a una recopilaci\u00F3n de permisos de s\u00F3lo lectura"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "se esperaba un tipo de almac\u00E9n de claves"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"no se puede especificar Principal con una clase de comod\u00EDn sin un nombre de comod\u00EDn"},
{"expected.codeBase.or.SignedBy", "se esperaba codeBase o SignedBy"},
{"only.Principal.based.grant.entries.permitted",
"s\u00F3lo se permite otorgar entradas basadas en Principal"},
{"expected.permission.entry", "se esperaba un permiso de entrada"},
{"number.", "n\u00FAmero "},
{"expected.expect.read.end.of.file.",
"se esperaba [{0}], se ha le\u00EDdo final de archivo"},
{"expected.read.end.of.file", "se esperaba ';', se ha le\u00EDdo el final de archivo"},
{"line.", "l\u00EDnea "},
{".expected.", ": se esperaba '"},
{".found.", "', se ha encontrado '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [Grupo Principal]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [Grupo Adicional]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "se ha proporcionado un nombre nulo"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_fr extends java.util.ListResourceBundle {
"Nom utilisateur Kerberos [{0}] : "},
{"Kerberos.password.for.username.",
"Mot de passe Kerberos pour {0} : "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": erreur d'analyse "},
{"COLON", ": "},
{".error.adding.Permission.", ": erreur d'ajout de droit "},
{"SPACE", " "},
{".error.adding.Entry.", ": erreur d'ajout d'entr\u00E9e "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"tentative d'ajout de droit \u00E0 un ensemble de droits en lecture seule"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "type de fichier de cl\u00E9s attendu"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"impossible de sp\u00E9cifier le principal avec une classe g\u00E9n\u00E9rique sans nom g\u00E9n\u00E9rique"},
{"expected.codeBase.or.SignedBy", "codeBase ou SignedBy attendu"},
{"only.Principal.based.grant.entries.permitted",
"seules les entr\u00E9es bas\u00E9es sur Principal sont autoris\u00E9es"},
{"expected.permission.entry", "entr\u00E9e de droit attendue"},
{"number.", "nombre "},
{"expected.expect.read.end.of.file.",
"attendu {0}, lecture de fin de fichier"},
{"expected.read.end.of.file", "attendu ';', lecture de fin de fichier"},
{"line.", "ligne "},
{".expected.", ": attendu '"},
{".found.", "', trouv\u00E9 '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [groupe principal] : "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [groupe suppl\u00E9mentaire] : "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal : "},
{"SolarisPrincipal.", "SolarisPrincipal : "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "nom NULL fourni"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_it extends java.util.ListResourceBundle {
"Nome utente Kerberos [{0}]: "},
{"Kerberos.password.for.username.",
"Password Kerberos per {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": errore durante l'analisi "},
{"COLON", ": "},
{".error.adding.Permission.", ": errore durante l'aggiunta dell'autorizzazione "},
{"SPACE", " "},
{".error.adding.Entry.", ": errore durante l'aggiunta della voce "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"tentativo di aggiungere un'autorizzazione a una PermissionCollection di sola lettura"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "tipo keystore previsto"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"impossibile specificare un principal con una classe carattere jolly senza un nome carattere jolly"},
{"expected.codeBase.or.SignedBy", "previsto codeBase o SignedBy"},
{"only.Principal.based.grant.entries.permitted",
"sono consentiti solo valori garantiti basati sul principal"},
{"expected.permission.entry", "prevista voce di autorizzazione"},
{"number.", "numero "},
{"expected.expect.read.end.of.file.",
"previsto {0}, letto end of file"},
{"expected.read.end.of.file", "previsto ';', letto end of file"},
{"line.", "riga "},
{".expected.", ": previsto '"},
{".found.", "', trovato '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [gruppo primario]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [gruppo supplementare]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "il nome fornito \u00E8 nullo"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_ja extends java.util.ListResourceBundle {
"Kerberos\u30E6\u30FC\u30B6\u30FC\u540D[{0}]: "},
{"Kerberos.password.for.username.",
"{0}\u306EKerberos\u30D1\u30B9\u30EF\u30FC\u30C9: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": \u89E3\u6790\u30A8\u30E9\u30FC "},
{"COLON", ": "},
{".error.adding.Permission.", ": \u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC "},
{"SPACE", " "},
{".error.adding.Entry.", ": \u30A8\u30F3\u30C8\u30EA\u306E\u8FFD\u52A0\u30A8\u30E9\u30FC "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"\u8AAD\u53D6\u308A\u5C02\u7528\u306EPermissionCollection\u306B\u30A2\u30AF\u30BB\u30B9\u6A29\u306E\u8FFD\u52A0\u304C\u8A66\u884C\u3055\u308C\u307E\u3057\u305F"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "\u4E88\u60F3\u3055\u308C\u305F\u30AD\u30FC\u30B9\u30C8\u30A2\u30FB\u30BF\u30A4\u30D7"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u540D\u306E\u306A\u3044\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9\u30FB\u30AF\u30E9\u30B9\u3092\u4F7F\u7528\u3057\u3066\u3001\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u3092\u6307\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093"},
{"expected.codeBase.or.SignedBy", "\u4E88\u60F3\u3055\u308C\u305FcodeBase\u307E\u305F\u306FSignedBy"},
{"only.Principal.based.grant.entries.permitted",
"\u30D7\u30EA\u30F3\u30B7\u30D1\u30EB\u30FB\u30D9\u30FC\u30B9\u306E\u30A8\u30F3\u30C8\u30EA\u306E\u307F\u304C\u8A31\u53EF\u3055\u308C\u307E\u3059\u3002"},
{"expected.permission.entry", "\u4E88\u60F3\u3055\u308C\u305F\u30A2\u30AF\u30BB\u30B9\u6A29\u30A8\u30F3\u30C8\u30EA"},
{"number.", "\u6570 "},
{"expected.expect.read.end.of.file.",
"{0}\u3067\u306F\u306A\u304F\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"},
{"expected.read.end.of.file", "\u4E88\u60F3\u5024\u306F';'\u3067\u3059\u304C\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u7D42\u308F\u308A\u304C\u8AAD\u307F\u8FBC\u307E\u308C\u307E\u3057\u305F"},
{"line.", "\u884C\u756A\u53F7 "},
{".expected.", ": \u4E88\u60F3\u5024'"},
{".found.", "',\u691C\u51FA\u5024'"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [\u4E3B\u30B0\u30EB\u30FC\u30D7]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [\u88DC\u52A9\u30B0\u30EB\u30FC\u30D7]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "null\u306E\u540D\u524D\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F"}
};
/**

@ -95,50 +95,6 @@ public class AuthResources_ko extends java.util.ListResourceBundle {
"Kerberos \uC0AC\uC6A9\uC790 \uC774\uB984 [{0}]: "},
{"Kerberos.password.for.username.",
"{0}\uC758 Kerberos \uBE44\uBC00\uBC88\uD638: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": \uAD6C\uBB38\uBD84\uC11D \uC624\uB958 "},
{"COLON", ": "},
{".error.adding.Permission.", ": \uAD8C\uD55C \uCD94\uAC00 \uC624\uB958 "},
{"SPACE", " "},
{".error.adding.Entry.", ": \uD56D\uBAA9 \uCD94\uAC00 \uC624\uB958 "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"\uC77D\uAE30 \uC804\uC6A9 PermissionCollection\uC5D0 \uAD8C\uD55C\uC744 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD588\uC2B5\uB2C8\uB2E4."},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "\uD0A4 \uC800\uC7A5\uC18C \uC720\uD615\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"\uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uC774\uB984 \uC5C6\uC774 \uC640\uC77C\uB4DC \uCE74\uB4DC \uBB38\uC790 \uD074\uB798\uC2A4\uB97C \uC0AC\uC6A9\uD558\uB294 \uC8FC\uCCB4\uB97C \uC9C0\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4."},
{"expected.codeBase.or.SignedBy", "codeBase \uB610\uB294 SignedBy\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4."},
{"only.Principal.based.grant.entries.permitted",
"\uC8FC\uCCB4 \uAE30\uBC18 \uAD8C\uD55C \uBD80\uC5EC \uD56D\uBAA9\uB9CC \uD5C8\uC6A9\uB429\uB2C8\uB2E4."},
{"expected.permission.entry", "\uAD8C\uD55C \uD56D\uBAA9\uC774 \uD544\uC694\uD569\uB2C8\uB2E4."},
{"number.", "\uC22B\uC790 "},
{"expected.expect.read.end.of.file.",
"{0}\uC774(\uAC00) \uD544\uC694\uD558\uC9C0\uB9CC \uD30C\uC77C\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4."},
{"expected.read.end.of.file", "';'\uC774 \uD544\uC694\uD558\uC9C0\uB9CC \uD30C\uC77C\uC758 \uB05D\uC5D0 \uB3C4\uB2EC\uD588\uC2B5\uB2C8\uB2E4."},
{"line.", "\uD589 "},
{".expected.", ": \uD544\uC694\uD55C \uD56D\uBAA9: '"},
{".found.", "', \uBC1C\uACAC\uB41C \uD56D\uBAA9: '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [\uAE30\uBCF8 \uADF8\uB8F9]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [\uBCF4\uC870 \uADF8\uB8F9]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "\uB110 \uC774\uB984\uC744 \uC81C\uACF5\uD588\uC2B5\uB2C8\uB2E4."}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_pt_BR extends java.util.ListResourceBundle {
"Nome do usu\u00E1rio de Kerberos [{0}]: "},
{"Kerberos.password.for.username.",
"Senha de Kerberos de {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": erro de parsing "},
{"COLON", ": "},
{".error.adding.Permission.", ": erro ao adicionar a Permiss\u00E3o "},
{"SPACE", " "},
{".error.adding.Entry.", ": erro ao adicionar a Entrada "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"tentativa de adicionar uma Permiss\u00E3o a um PermissionCollection somente para leitura"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "tipo de armazenamento de chaves esperado"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"n\u00E3o \u00E9 poss\u00EDvel especificar um principal com uma classe curinga sem um nome curinga"},
{"expected.codeBase.or.SignedBy", "CodeBase ou SignedBy esperado"},
{"only.Principal.based.grant.entries.permitted",
"somente \u00E9 permitido conceder entradas com base no Principal"},
{"expected.permission.entry", "entrada de permiss\u00E3o esperada"},
{"number.", "n\u00FAmero "},
{"expected.expect.read.end.of.file.",
"esperado {0}, ler fim do arquivo"},
{"expected.read.end.of.file", "esperado ';', fim de arquivo lido"},
{"line.", "linha "},
{".expected.", ": esperado '"},
{".found.", "', encontrado '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [Grupo Principal]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [Grupo Complementar]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "nome nulo fornecido"}
};
/**

@ -95,50 +95,6 @@ public class AuthResources_sv extends java.util.ListResourceBundle {
"Kerberos-anv\u00E4ndarnamn [{0}]: "},
{"Kerberos.password.for.username.",
"Kerberos-l\u00F6senord f\u00F6r {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": tolkningsfel "},
{"COLON", ": "},
{".error.adding.Permission.", ": fel vid till\u00E4gg av beh\u00F6righet "},
{"SPACE", " "},
{".error.adding.Entry.", ": fel vid till\u00E4gg av post "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"f\u00F6rs\u00F6k att l\u00E4gga till beh\u00F6righet till skrivskyddad PermissionCollection"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "f\u00F6rv\u00E4ntad nyckellagertyp"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"kan inte ange identitetshavare med en jokerteckenklass utan ett jokerteckennamn"},
{"expected.codeBase.or.SignedBy", "f\u00F6rv\u00E4ntade codeBase eller SignedBy"},
{"only.Principal.based.grant.entries.permitted",
"endast identitetshavarbaserade poster till\u00E5ts"},
{"expected.permission.entry", "f\u00F6rv\u00E4ntade beh\u00F6righetspost"},
{"number.", "nummer"},
{"expected.expect.read.end.of.file.",
"f\u00F6rv\u00E4ntade {0}, l\u00E4ste filslut"},
{"expected.read.end.of.file", "f\u00F6rv\u00E4ntade ';', l\u00E4ste filslut"},
{"line.", "rad "},
{".expected.", ": f\u00F6rv\u00E4ntade '"},
{".found.", "', hittade '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [prim\u00E4r grupp]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [till\u00E4ggsgrupp]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "null-namn angavs"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_zh_CN extends java.util.ListResourceBundle {
"Kerberos \u7528\u6237\u540D [{0}]: "},
{"Kerberos.password.for.username.",
"{0}\u7684 Kerberos \u53E3\u4EE4: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": \u89E3\u6790\u65F6\u51FA\u9519 "},
{"COLON", ": "},
{".error.adding.Permission.", ": \u6DFB\u52A0\u6743\u9650\u65F6\u51FA\u9519 "},
{"SPACE", " "},
{".error.adding.Entry.", ": \u6DFB\u52A0\u6761\u76EE\u65F6\u51FA\u9519 "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"\u5C1D\u8BD5\u5C06\u6743\u9650\u6DFB\u52A0\u81F3\u53EA\u8BFB\u7684 PermissionCollection"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "\u5E94\u4E3A\u5BC6\u94A5\u5E93\u7C7B\u578B"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"\u6CA1\u6709\u901A\u914D\u7B26\u540D\u79F0, \u65E0\u6CD5\u4F7F\u7528\u901A\u914D\u7B26\u7C7B\u6307\u5B9A\u4E3B\u7528\u6237"},
{"expected.codeBase.or.SignedBy", "\u5E94\u4E3A codeBase \u6216 SignedBy"},
{"only.Principal.based.grant.entries.permitted",
"\u53EA\u5141\u8BB8\u57FA\u4E8E\u4E3B\u7528\u6237\u7684\u6388\u6743\u6761\u76EE"},
{"expected.permission.entry", "\u5E94\u4E3A\u6743\u9650\u6761\u76EE"},
{"number.", "\u7F16\u53F7 "},
{"expected.expect.read.end.of.file.",
"\u5E94\u4E3A{0}, \u8BFB\u53D6\u7684\u662F\u6587\u4EF6\u7ED3\u5C3E"},
{"expected.read.end.of.file", "\u5E94\u4E3A ';', \u8BFB\u53D6\u7684\u662F\u6587\u4EF6\u7ED3\u5C3E"},
{"line.", "\u884C "},
{".expected.", ": \u5E94\u4E3A '"},
{".found.", "', \u627E\u5230 '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [\u4E3B\u7EC4]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [\u8865\u5145\u7EC4]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "\u63D0\u4F9B\u7684\u540D\u79F0\u4E3A\u7A7A\u503C"}
};
/**

@ -1,5 +1,5 @@
/*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -95,50 +95,6 @@ public class AuthResources_zh_TW extends java.util.ListResourceBundle {
"Kerberos \u4F7F\u7528\u8005\u540D\u7A31 [{0}]: "},
{"Kerberos.password.for.username.",
"Kerberos \u5BC6\u78BC {0}: "},
/*** EVERYTHING BELOW IS DEPRECATED ***/
// com.sun.security.auth.PolicyFile
{".error.parsing.", ": \u5256\u6790\u932F\u8AA4 "},
{"COLON", ": "},
{".error.adding.Permission.", ": \u65B0\u589E\u6B0A\u9650\u932F\u8AA4 "},
{"SPACE", " "},
{".error.adding.Entry.", ": \u65B0\u589E\u8F38\u5165\u932F\u8AA4 "},
{"LPARAM", "("},
{"RPARAM", ")"},
{"attempt.to.add.a.Permission.to.a.readonly.PermissionCollection",
"\u8A66\u8457\u65B0\u589E\u6B0A\u9650\u81F3\u552F\u8B80\u7684 PermissionCollection"},
// com.sun.security.auth.PolicyParser
{"expected.keystore.type", "\u9810\u671F\u7684\u91D1\u9470\u5132\u5B58\u5EAB\u985E\u578B"},
{"can.not.specify.Principal.with.a.wildcard.class.without.a.wildcard.name",
"\u6C92\u6709\u842C\u7528\u5B57\u5143\u540D\u7A31\uFF0C\u7121\u6CD5\u6307\u5B9A\u542B\u6709\u842C\u7528\u5B57\u5143\u985E\u5225\u7684 Principal"},
{"expected.codeBase.or.SignedBy", "\u9810\u671F\u7684 codeBase \u6216 SignedBy"},
{"only.Principal.based.grant.entries.permitted",
"\u53EA\u5141\u8A31\u4EE5 Principal \u70BA\u57FA\u790E\u7684\u6388\u6B0A\u9805\u76EE"},
{"expected.permission.entry", "\u9810\u671F\u7684\u6B0A\u9650\u9805\u76EE"},
{"number.", "\u865F\u78BC "},
{"expected.expect.read.end.of.file.",
"\u9810\u671F\u70BA {0}, \u8B80\u53D6\u6A94\u6848\u7D50\u5C3E"},
{"expected.read.end.of.file", "\u9810\u671F\u7684 ';'\uFF0C\u8B80\u53D6\u6A94\u6848\u7D50\u5C3E"},
{"line.", "\u884C "},
{".expected.", ": \u9810\u671F '"},
{".found.", "'\uFF0C\u767C\u73FE '"},
{"QUOTE", "'"},
// SolarisPrincipals
{"SolarisNumericGroupPrincipal.Primary.Group.",
"SolarisNumericGroupPrincipal [\u4E3B\u7FA4\u7D44]: "},
{"SolarisNumericGroupPrincipal.Supplementary.Group.",
"SolarisNumericGroupPrincipal [\u9644\u52A0\u7FA4\u7D44]: "},
{"SolarisNumericUserPrincipal.",
"SolarisNumericUserPrincipal: "},
{"SolarisPrincipal.", "SolarisPrincipal: "},
// provided.null.name is the NullPointerException message when a
// developer incorrectly passes a null name to the constructor of
// subclasses of java.security.Principal
{"provided.null.name", "\u63D0\u4F9B\u7A7A\u503C\u540D\u7A31"}
};
/**

@ -1,300 +0,0 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth;
import java.security.CodeSource;
import java.security.PermissionCollection;
import javax.security.auth.Subject;
/**
* This class represents a default implementation for
* {@code javax.security.auth.Policy}.
*
* <p> This object stores the policy for entire Java runtime,
* and is the amalgamation of multiple static policy
* configurations that resides in files.
* The algorithm for locating the policy file(s) and reading their
* information into this {@code Policy} object is:
*
* <ol>
* <li>
* Loop through the security properties,
* <i>auth.policy.url.1</i>, <i>auth.policy.url.2</i>, ...,
* <i>auth.policy.url.X</i>".
* Each property value specifies a {@code URL} pointing to a
* policy file to be loaded. Read in and load each policy.
*
* <li>
* The {@code java.lang.System} property <i>java.security.auth.policy</i>
* may also be set to a {@code URL} pointing to another policy file
* (which is the case when a user uses the -D switch at runtime).
* If this property is defined, and its use is allowed by the
* security property file (the Security property,
* <i>policy.allowSystemProperty</i> is set to <i>true</i>),
* also load that policy.
*
* <li>
* If the <i>java.security.auth.policy</i> property is defined using
* "==" (rather than "="), then ignore all other specified
* policies and only load this policy.
* </ol>
*
* Each policy file consists of one or more grant entries, each of
* which consists of a number of permission entries.
*
* <pre>
* grant signedBy "<b>alias</b>", codeBase "<b>URL</b>",
* principal <b>principalClass</b> "<b>principalName</b>",
* principal <b>principalClass</b> "<b>principalName</b>",
* ... {
*
* permission <b>Type</b> "<b>name</b> "<b>action</b>",
* signedBy "<b>alias</b>";
* permission <b>Type</b> "<b>name</b> "<b>action</b>",
* signedBy "<b>alias</b>";
* ....
* };
* </pre>
*
* All non-bold items above must appear as is (although case
* doesn't matter and some are optional, as noted below).
* Italicized items represent variable values.
*
* <p> A grant entry must begin with the word {@code grant}.
* The {@code signedBy} and {@code codeBase}
* name/value pairs are optional.
* If they are not present, then any signer (including unsigned code)
* will match, and any codeBase will match. Note that the
* {@code principal} name/value pair is not optional.
* This {@code Policy} implementation only permits
* Principal-based grant entries. Note that the <i>principalClass</i>
* may be set to the wildcard value, *, which allows it to match
* any {@code Principal} class. In addition, the <i>principalName</i>
* may also be set to the wildcard value, *, allowing it to match
* any {@code Principal} name. When setting the <i>principalName</i>
* to the *, do not surround the * with quotes.
*
* <p> A permission entry must begin with the word {@code permission}.
* The word <i>{@code Type}</i> in the template above is
* a specific permission type, such as {@code java.io.FilePermission}
* or {@code java.lang.RuntimePermission}.
*
* <p> The "<i>action</i>" is required for
* many permission types, such as {@code java.io.FilePermission}
* (where it specifies what type of file access that is permitted).
* It is not required for categories such as
* {@code java.lang.RuntimePermission}
* where it is not necessary - you either have the
* permission specified by the "<i>{@code name}</i>"
* value following the type name or you don't.
*
* <p> The {@code signedBy} name/value pair for a permission entry
* is optional. If present, it indicates a signed permission. That is,
* the permission class itself must be signed by the given alias in
* order for it to be granted. For example,
* suppose you have the following grant entry:
*
* <pre>
* grant principal foo.com.Principal "Duke" {
* permission Foo "foobar", signedBy "FooSoft";
* }
* </pre>
*
* <p> Then this permission of type <i>Foo</i> is granted if the
* {@code Foo.class} permission has been signed by the
* "FooSoft" alias, or if {@code Foo.class} is a
* system class (i.e., is found on the CLASSPATH).
*
* <p> Items that appear in an entry must appear in the specified order
* ({@code permission}, <i>Type</i>, "<i>name</i>", and
* "<i>action</i>"). An entry is terminated with a semicolon.
*
* <p> Case is unimportant for the identifiers ({@code permission},
* {@code signedBy}, {@code codeBase}, etc.) but is
* significant for the <i>Type</i>
* or for any string that is passed in as a value.
*
* <p> An example of two entries in a policy configuration file is
* <pre>
* // if the code is comes from "foo.com" and is running as "Duke",
* // grant it read/write to all files in /tmp.
*
* grant codeBase "foo.com", principal foo.com.Principal "Duke" {
* permission java.io.FilePermission "/tmp/*", "read,write";
* };
*
* // grant any code running as "Duke" permission to read
* // the "java.vendor" Property.
*
* grant principal foo.com.Principal "Duke" {
* permission java.util.PropertyPermission "java.vendor";
* </pre>
*
* <p> This {@code Policy} implementation supports
* special handling for PrivateCredentialPermissions.
* If a grant entry is configured with a
* {@code PrivateCredentialPermission},
* and the "Principal Class/Principal Name" for that
* {@code PrivateCredentialPermission} is "self",
* then the entry grants the specified {@code Subject} permission to
* access its own private Credential. For example,
* the following grants the {@code Subject} "Duke"
* access to its own a.b.Credential.
*
* <pre>
* grant principal foo.com.Principal "Duke" {
* permission javax.security.auth.PrivateCredentialPermission
* "a.b.Credential self",
* "read";
* };
* </pre>
*
* The following grants the {@code Subject} "Duke"
* access to all of its own private Credentials:
*
* <pre>
* grant principal foo.com.Principal "Duke" {
* permission javax.security.auth.PrivateCredentialPermission
* "* self",
* "read";
* };
* </pre>
*
* The following grants all Subjects authenticated as a
* {@code SolarisPrincipal} (regardless of their respective names)
* permission to access their own private Credentials:
*
* <pre>
* grant principal com.sun.security.auth.SolarisPrincipal * {
* permission javax.security.auth.PrivateCredentialPermission
* "* self",
* "read";
* };
* </pre>
*
* The following grants all Subjects permission to access their own
* private Credentials:
*
* <pre>
* grant principal * * {
* permission javax.security.auth.PrivateCredentialPermission
* "* self",
* "read";
* };
* </pre>
* @deprecated As of JDK&nbsp;1.4, replaced by
* {@code sun.security.provider.PolicyFile}.
* This class is entirely deprecated.
* This class is subject to removal in a future version of Java SE.
*
* @see java.security.CodeSource
* @see java.security.Permissions
* @see java.security.ProtectionDomain
* @see java.security.Security security properties
*/
@Deprecated(since="1.4", forRemoval=true)
public class PolicyFile extends javax.security.auth.Policy {
private final sun.security.provider.AuthPolicyFile apf;
/**
* Initializes the Policy object and reads the default policy
* configuration file(s) into the Policy object.
*/
public PolicyFile() {
apf = new sun.security.provider.AuthPolicyFile();
}
/**
* Refreshes the policy object by re-reading all the policy files.
*
* @exception SecurityException if the caller doesn't have permission
* to refresh the {@code Policy}.
*/
@Override
public void refresh() {
apf.refresh();
}
/**
* Examines this {@code Policy} and returns the Permissions granted
* to the specified {@code Subject} and {@code CodeSource}.
*
* <p> Permissions for a particular <i>grant</i> entry are returned
* if the {@code CodeSource} constructed using the codebase and
* signedby values specified in the entry {@code implies}
* the {@code CodeSource} provided to this method, and if the
* {@code Subject} provided to this method contains all of the
* Principals specified in the entry.
*
* <p> The {@code Subject} provided to this method contains all
* of the Principals specified in the entry if, for each
* {@code Principal}, "P1", specified in the <i>grant</i> entry
* one of the following two conditions is met:
*
* <ol>
* <li> the {@code Subject} has a
* {@code Principal}, "P2", where
* {@code P2.getClass().getName()} equals the
* P1's class name, and where
* {@code P2.getName()} equals the P1's name.
*
* <li> P1 implements
* {@code com.sun.security.auth.PrincipalComparator},
* and {@code P1.implies} the provided {@code Subject}.
* </ol>
*
* <p> Note that this {@code Policy} implementation has
* special handling for PrivateCredentialPermissions.
* When this method encounters a {@code PrivateCredentialPermission}
* which specifies "self" as the {@code Principal} class and name,
* it does not add that {@code Permission} to the returned
* {@code PermissionCollection}. Instead, it builds
* a new {@code PrivateCredentialPermission}
* for each {@code Principal} associated with the provided
* {@code Subject}. Each new {@code PrivateCredentialPermission}
* contains the same Credential class as specified in the
* originally granted permission, as well as the Class and name
* for the respective {@code Principal}.
*
* @param subject the Permissions granted to this {@code Subject}
* and the additionally provided {@code CodeSource}
* are returned.
*
* @param codesource the Permissions granted to this {@code CodeSource}
* and the additionally provided {@code Subject}
* are returned.
*
* @return the Permissions granted to the provided {@code Subject}
* {@code CodeSource}.
*/
@Override
public PermissionCollection getPermissions(final Subject subject,
final CodeSource codesource) {
return apf.getPermissions(subject, codesource);
}
}

@ -1,193 +0,0 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth;
import java.security.Principal;
import static sun.security.util.ResourcesMgr.getAuthResourceString;
/**
* This class implements the {@code Principal} interface
* and represents a user's Solaris group identification number (GID).
*
* <p> Principals such as this {@code SolarisNumericGroupPrincipal}
* may be associated with a particular {@code Subject}
* to augment that {@code Subject} with an additional
* identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
* the Principals associated with a {@code Subject}.
* @deprecated As of JDK&nbsp;1.4, replaced by
* {@link UnixNumericGroupPrincipal}.
* This class is entirely deprecated.
* This class is subject to removal in a future version of Java SE.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
*/
@Deprecated(since="1.4", forRemoval=true)
public class SolarisNumericGroupPrincipal implements
Principal,
java.io.Serializable {
private static final long serialVersionUID = 2345199581042573224L;
/**
* @serial
*/
private String name;
/**
* @serial
*/
private boolean primaryGroup;
/**
* Create a {@code SolarisNumericGroupPrincipal} using a
* {@code String} representation of the user's
* group identification number (GID).
*
* @param name the user's group identification number (GID)
* for this user.
*
* @param primaryGroup true if the specified GID represents the
* primary group to which this user belongs.
*
* @exception NullPointerException if the {@code name}
* is {@code null}.
*/
public SolarisNumericGroupPrincipal(String name, boolean primaryGroup) {
if (name == null)
throw new NullPointerException(getAuthResourceString("provided.null.name"));
this.name = name;
this.primaryGroup = primaryGroup;
}
/**
* Create a {@code SolarisNumericGroupPrincipal} using a
* long representation of the user's group identification number (GID).
*
* @param name the user's group identification number (GID) for this user
* represented as a long.
*
* @param primaryGroup true if the specified GID represents the
* primary group to which this user belongs.
*
*/
public SolarisNumericGroupPrincipal(long name, boolean primaryGroup) {
this.name = Long.toString(name);
this.primaryGroup = primaryGroup;
}
/**
* Return the user's group identification number (GID) for this
* {@code SolarisNumericGroupPrincipal}.
*
* @return the user's group identification number (GID) for this
* {@code SolarisNumericGroupPrincipal}
*/
public String getName() {
return name;
}
/**
* Return the user's group identification number (GID) for this
* {@code SolarisNumericGroupPrincipal} as a long.
*
* @return the user's group identification number (GID) for this
* {@code SolarisNumericGroupPrincipal} as a long.
*/
public long longValue() {
return Long.parseLong(name);
}
/**
* Return whether this group identification number (GID) represents
* the primary group to which this user belongs.
*
* @return true if this group identification number (GID) represents
* the primary group to which this user belongs,
* or false otherwise.
*/
public boolean isPrimaryGroup() {
return primaryGroup;
}
/**
* Return a string representation of this
* {@code SolarisNumericGroupPrincipal}.
*
* @return a string representation of this
* {@code SolarisNumericGroupPrincipal}.
*/
public String toString() {
return primaryGroup ?
getAuthResourceString
("SolarisNumericGroupPrincipal.Primary.Group.") + name :
getAuthResourceString
("SolarisNumericGroupPrincipal.Supplementary.Group.") + name;
}
/**
* Compares the specified Object with this
* {@code SolarisNumericGroupPrincipal}
* for equality. Returns true if the given object is also a
* {@code SolarisNumericGroupPrincipal} and the two
* SolarisNumericGroupPrincipals
* have the same group identification number (GID).
*
* @param o Object to be compared for equality with this
* {@code SolarisNumericGroupPrincipal}.
*
* @return true if the specified Object is equal to this
* {@code SolarisNumericGroupPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
return false;
if (this == o)
return true;
if (!(o instanceof SolarisNumericGroupPrincipal))
return false;
SolarisNumericGroupPrincipal that = (SolarisNumericGroupPrincipal)o;
if (this.getName().equals(that.getName()) &&
this.isPrimaryGroup() == that.isPrimaryGroup())
return true;
return false;
}
/**
* Return a hash code for this {@code SolarisNumericGroupPrincipal}.
*
* @return a hash code for this {@code SolarisNumericGroupPrincipal}.
*/
public int hashCode() {
return toString().hashCode();
}
}

@ -1,161 +0,0 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth;
import java.security.Principal;
import static sun.security.util.ResourcesMgr.getAuthResourceString;
/**
* This class implements the {@code Principal} interface
* and represents a user's Solaris identification number (UID).
*
* <p> Principals such as this {@code SolarisNumericUserPrincipal}
* may be associated with a particular {@code Subject}
* to augment that {@code Subject} with an additional
* identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
* the Principals associated with a {@code Subject}.
* @deprecated As of JDK&nbsp;1.4, replaced by
* {@link UnixNumericUserPrincipal}.
* This class is entirely deprecated.
* This class is subject to removal in a future version of Java SE.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
*/
@Deprecated(since="1.4", forRemoval=true)
public class SolarisNumericUserPrincipal implements
Principal,
java.io.Serializable {
private static final long serialVersionUID = -3178578484679887104L;
/**
* @serial
*/
private String name;
/**
* Create a {@code SolarisNumericUserPrincipal} using a
* {@code String} representation of the
* user's identification number (UID).
*
* @param name the user identification number (UID) for this user.
*
* @exception NullPointerException if the {@code name}
* is {@code null}.
*/
public SolarisNumericUserPrincipal(String name) {
if (name == null)
throw new NullPointerException(getAuthResourceString("provided.null.name"));
this.name = name;
}
/**
* Create a {@code SolarisNumericUserPrincipal} using a
* long representation of the user's identification number (UID).
*
* @param name the user identification number (UID) for this user
* represented as a long.
*/
public SolarisNumericUserPrincipal(long name) {
this.name = Long.toString(name);
}
/**
* Return the user identification number (UID) for this
* {@code SolarisNumericUserPrincipal}.
*
* @return the user identification number (UID) for this
* {@code SolarisNumericUserPrincipal}
*/
public String getName() {
return name;
}
/**
* Return the user identification number (UID) for this
* {@code SolarisNumericUserPrincipal} as a long.
*
* @return the user identification number (UID) for this
* {@code SolarisNumericUserPrincipal} as a long.
*/
public long longValue() {
return Long.parseLong(name);
}
/**
* Return a string representation of this
* {@code SolarisNumericUserPrincipal}.
*
* @return a string representation of this
* {@code SolarisNumericUserPrincipal}.
*/
public String toString() {
return(getAuthResourceString("SolarisNumericUserPrincipal.") + name);
}
/**
* Compares the specified Object with this
* {@code SolarisNumericUserPrincipal}
* for equality. Returns true if the given object is also a
* {@code SolarisNumericUserPrincipal} and the two
* SolarisNumericUserPrincipals
* have the same user identification number (UID).
*
* @param o Object to be compared for equality with this
* {@code SolarisNumericUserPrincipal}.
*
* @return true if the specified Object is equal to this
* {@code SolarisNumericUserPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
return false;
if (this == o)
return true;
if (!(o instanceof SolarisNumericUserPrincipal))
return false;
SolarisNumericUserPrincipal that = (SolarisNumericUserPrincipal)o;
if (this.getName().equals(that.getName()))
return true;
return false;
}
/**
* Return a hash code for this {@code SolarisNumericUserPrincipal}.
*
* @return a hash code for this {@code SolarisNumericUserPrincipal}.
*/
public int hashCode() {
return name.hashCode();
}
}

@ -1,129 +0,0 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth;
import java.security.Principal;
import static sun.security.util.ResourcesMgr.getAuthResourceString;
/**
* This class implements the {@code Principal} interface
* and represents a Solaris user.
*
* <p> Principals such as this {@code SolarisPrincipal}
* may be associated with a particular {@code Subject}
* to augment that {@code Subject} with an additional
* identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
* the Principals associated with a {@code Subject}.
*
* @deprecated As of JDK&nbsp;1.4, replaced by
* {@link UnixPrincipal}.
* This class is entirely deprecated.
* This class is subject to removal in a future version of Java SE.
* @see java.security.Principal
* @see javax.security.auth.Subject
*/
@Deprecated(since="1.4", forRemoval=true)
public class SolarisPrincipal implements Principal, java.io.Serializable {
private static final long serialVersionUID = -7840670002439379038L;
/**
* @serial
*/
private String name;
/**
* Create a SolarisPrincipal with a Solaris username.
*
* @param name the Unix username for this user.
*
* @exception NullPointerException if the {@code name}
* is {@code null}.
*/
public SolarisPrincipal(String name) {
if (name == null)
throw new NullPointerException(getAuthResourceString("provided.null.name"));
this.name = name;
}
/**
* Return the Unix username for this {@code SolarisPrincipal}.
*
* @return the Unix username for this {@code SolarisPrincipal}
*/
public String getName() {
return name;
}
/**
* Return a string representation of this {@code SolarisPrincipal}.
*
* @return a string representation of this {@code SolarisPrincipal}.
*/
public String toString() {
return(getAuthResourceString("SolarisPrincipal.") + name);
}
/**
* Compares the specified Object with this {@code SolarisPrincipal}
* for equality. Returns true if the given object is also a
* {@code SolarisPrincipal} and the two SolarisPrincipals
* have the same username.
*
* @param o Object to be compared for equality with this
* {@code SolarisPrincipal}.
*
* @return true if the specified Object is equal to this
* {@code SolarisPrincipal}.
*/
public boolean equals(Object o) {
if (o == null)
return false;
if (this == o)
return true;
if (!(o instanceof SolarisPrincipal))
return false;
SolarisPrincipal that = (SolarisPrincipal)o;
if (this.getName().equals(that.getName()))
return true;
return false;
}
/**
* Return a hash code for this {@code SolarisPrincipal}.
*
* @return a hash code for this {@code SolarisPrincipal}.
*/
public int hashCode() {
return name.hashCode();
}
}

@ -1,167 +0,0 @@
/*
* Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth;
import java.security.Principal;
import sun.security.x509.X500Name;
import static sun.security.util.ResourcesMgr.getAuthResourceString;
/**
* This class represents an X.500 {@code Principal}.
* X500Principals have names such as,
* "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"
* (RFC 1779 style).
*
* <p> Principals such as this {@code X500Principal}
* may be associated with a particular {@code Subject}
* to augment that {@code Subject} with an additional
* identity. Refer to the {@code Subject} class for more information
* on how to achieve this. Authorization decisions can then be based upon
* the Principals associated with a {@code Subject}.
*
* @see java.security.Principal
* @see javax.security.auth.Subject
* @deprecated A new X500Principal class is available in the Java platform.
* This X500Principal classs is entirely deprecated and
* is here to allow for a smooth transition to the new
* class.
* This class is subject to removal in a future version of Java SE.
* @see javax.security.auth.x500.X500Principal
*/
@Deprecated(since="1.4", forRemoval=true)
public class X500Principal implements Principal, java.io.Serializable {
private static final long serialVersionUID = -8222422609431628648L;
/**
* @serial
*/
private String name;
transient private X500Name thisX500Name;
/**
* Create a X500Principal with an X.500 Name,
* such as "CN=Duke, OU=JavaSoft, O=Sun Microsystems, C=US"
* (RFC 1779 style).
*
* @param name the X.500 name
*
* @exception NullPointerException if the {@code name}
* is {@code null}.
*
* @exception IllegalArgumentException if the {@code name}
* is improperly specified.
*/
public X500Principal(String name) {
if (name == null)
throw new NullPointerException(getAuthResourceString("provided.null.name"));
try {
thisX500Name = new X500Name(name);
} catch (Exception e) {
throw new IllegalArgumentException(e.toString());
}
this.name = name;
}
/**
* Return the Unix username for this {@code X500Principal}.
*
* @return the Unix username for this {@code X500Principal}
*/
public String getName() {
return thisX500Name.getName();
}
/**
* Return a string representation of this {@code X500Principal}.
*
* @return a string representation of this {@code X500Principal}.
*/
public String toString() {
return thisX500Name.toString();
}
/**
* Compares the specified Object with this {@code X500Principal}
* for equality.
*
* @param o Object to be compared for equality with this
* {@code X500Principal}.
*
* @return true if the specified Object is equal to this
* {@code X500Principal}.
*/
public boolean equals(Object o) {
if (o == null)
return false;
if (this == o)
return true;
if (o instanceof X500Principal) {
X500Principal that = (X500Principal)o;
try {
X500Name thatX500Name = new X500Name(that.getName());
return thisX500Name.equals(thatX500Name);
} catch (Exception e) {
// any parsing exceptions, return false
return false;
}
} else if (o instanceof Principal) {
// this will return 'true' if 'o' is a sun.security.x509.X500Name
// and the X500Names are equal
return o.equals(thisX500Name);
}
return false;
}
/**
* Return a hash code for this {@code X500Principal}.
*
* @return a hash code for this {@code X500Principal}.
*/
public int hashCode() {
return thisX500Name.hashCode();
}
/**
* Reads this object from a stream (i.e., deserializes it)
*/
private void readObject(java.io.ObjectInputStream s) throws
java.io.IOException,
java.io.NotActiveException,
ClassNotFoundException {
s.defaultReadObject();
// re-create thisX500Name
thisX500Name = new X500Name(name);
}
}

@ -1,313 +0,0 @@
/*
* Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth.module;
import java.util.*;
import java.io.IOException;
import javax.security.auth.*;
import javax.security.auth.callback.*;
import javax.security.auth.login.*;
import javax.security.auth.spi.*;
import com.sun.security.auth.SolarisPrincipal;
import com.sun.security.auth.SolarisNumericUserPrincipal;
import com.sun.security.auth.SolarisNumericGroupPrincipal;
/**
* This {@code LoginModule} imports a user's Solaris
* {@code Principal} information ({@code SolarisPrincipal},
* {@code SolarisNumericUserPrincipal},
* and {@code SolarisNumericGroupPrincipal})
* and associates them with the current {@code Subject}.
*
* <p> This LoginModule recognizes the debug option.
* If set to true in the login Configuration,
* debug messages will be output to the output stream, System.out.
* @deprecated As of JDK1.4, replaced by
* {@code com.sun.security.auth.module.UnixLoginModule}.
* This LoginModule is entirely deprecated and
* is here to allow for a smooth transition to the new
* UnixLoginModule.
* This class is subject to removal in a future version of Java SE.
*
*/
@Deprecated(since="1.4", forRemoval=true)
public class SolarisLoginModule implements LoginModule {
// initial state
private Subject subject;
private CallbackHandler callbackHandler;
private Map<String, ?> sharedState;
private Map<String, ?> options;
// configurable option
private boolean debug = true;
// SolarisSystem to retrieve underlying system info
@SuppressWarnings("removal")
private SolarisSystem ss;
// the authentication status
private boolean succeeded = false;
private boolean commitSucceeded = false;
// Underlying system info
@SuppressWarnings("removal")
private SolarisPrincipal userPrincipal;
@SuppressWarnings("removal")
private SolarisNumericUserPrincipal UIDPrincipal;
@SuppressWarnings("removal")
private SolarisNumericGroupPrincipal GIDPrincipal;
@SuppressWarnings("removal")
private LinkedList<SolarisNumericGroupPrincipal> supplementaryGroups =
new LinkedList<>();
/**
* Initialize this {@code LoginModule}.
*
* @param subject the {@code Subject} to be authenticated.
*
* @param callbackHandler a {@code CallbackHandler} for communicating
* with the end user (prompting for usernames and
* passwords, for example).
*
* @param sharedState shared {@code LoginModule} state.
*
* @param options options specified in the login
* {@code Configuration} for this particular
* {@code LoginModule}.
*/
public void initialize(Subject subject, CallbackHandler callbackHandler,
Map<String,?> sharedState,
Map<String,?> options)
{
this.subject = subject;
this.callbackHandler = callbackHandler;
this.sharedState = sharedState;
this.options = options;
// initialize any configured options
debug = "true".equalsIgnoreCase((String)options.get("debug"));
}
/**
* Authenticate the user (first phase).
*
* <p> The implementation of this method attempts to retrieve the user's
* Solaris {@code Subject} information by making a native Solaris
* system call.
*
* @exception FailedLoginException if attempts to retrieve the underlying
* system information fail.
*
* @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
@SuppressWarnings("removal")
public boolean login() throws LoginException {
long[] solarisGroups = null;
try {
ss = new SolarisSystem();
} catch (UnsatisfiedLinkError ule) {
succeeded = false;
throw new FailedLoginException
("Failed in attempt to import " +
"the underlying system identity information" +
" on " + System.getProperty("os.name"));
}
userPrincipal = new SolarisPrincipal(ss.getUsername());
UIDPrincipal = new SolarisNumericUserPrincipal(ss.getUid());
GIDPrincipal = new SolarisNumericGroupPrincipal(ss.getGid(), true);
if (ss.getGroups() != null && ss.getGroups().length > 0)
solarisGroups = ss.getGroups();
for (int i = 0; i < solarisGroups.length; i++) {
SolarisNumericGroupPrincipal ngp =
new SolarisNumericGroupPrincipal
(solarisGroups[i], false);
if (!ngp.getName().equals(GIDPrincipal.getName()))
supplementaryGroups.add(ngp);
}
if (debug) {
System.out.println("\t\t[SolarisLoginModule]: " +
"succeeded importing info: ");
System.out.println("\t\t\tuid = " + ss.getUid());
System.out.println("\t\t\tgid = " + ss.getGid());
solarisGroups = ss.getGroups();
for (int i = 0; i < solarisGroups.length; i++) {
System.out.println("\t\t\tsupp gid = " + solarisGroups[i]);
}
}
succeeded = true;
return true;
}
/**
* Commit the authentication (second phase).
*
* <p> This method is called if the LoginContext's
* overall authentication succeeded
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules
* succeeded).
*
* <p> If this LoginModule's own authentication attempt
* succeeded (the importing of the Solaris authentication information
* succeeded), then this method associates the Solaris Principals
* with the {@code Subject} currently tied to the
* {@code LoginModule}. If this LoginModule's
* authentication attempted failed, then this method removes
* any state that was originally saved.
*
* @exception LoginException if the commit fails
*
* @return true if this LoginModule's own login and commit attempts
* succeeded, or false otherwise.
*/
public boolean commit() throws LoginException {
if (succeeded == false) {
if (debug) {
System.out.println("\t\t[SolarisLoginModule]: " +
"did not add any Principals to Subject " +
"because own authentication failed.");
}
return false;
}
if (subject.isReadOnly()) {
throw new LoginException ("Subject is Readonly");
}
if (!subject.getPrincipals().contains(userPrincipal))
subject.getPrincipals().add(userPrincipal);
if (!subject.getPrincipals().contains(UIDPrincipal))
subject.getPrincipals().add(UIDPrincipal);
if (!subject.getPrincipals().contains(GIDPrincipal))
subject.getPrincipals().add(GIDPrincipal);
for (int i = 0; i < supplementaryGroups.size(); i++) {
if (!subject.getPrincipals().contains(supplementaryGroups.get(i)))
subject.getPrincipals().add(supplementaryGroups.get(i));
}
if (debug) {
System.out.println("\t\t[SolarisLoginModule]: " +
"added SolarisPrincipal,");
System.out.println("\t\t\t\tSolarisNumericUserPrincipal,");
System.out.println("\t\t\t\tSolarisNumericGroupPrincipal(s),");
System.out.println("\t\t\t to Subject");
}
commitSucceeded = true;
return true;
}
/**
* Abort the authentication (second phase).
*
* <p> This method is called if the LoginContext's
* overall authentication failed.
* (the relevant REQUIRED, REQUISITE, SUFFICIENT and OPTIONAL LoginModules
* did not succeed).
*
* <p> This method cleans up any state that was originally saved
* as part of the authentication attempt from the {@code login}
* and {@code commit} methods.
*
* @exception LoginException if the abort fails
*
* @return false if this LoginModule's own login and/or commit attempts
* failed, and true otherwise.
*/
@SuppressWarnings("removal")
public boolean abort() throws LoginException {
if (debug) {
System.out.println("\t\t[SolarisLoginModule]: " +
"aborted authentication attempt");
}
if (succeeded == false) {
return false;
} else if (succeeded == true && commitSucceeded == false) {
// Clean out state
succeeded = false;
ss = null;
userPrincipal = null;
UIDPrincipal = null;
GIDPrincipal = null;
supplementaryGroups =
new LinkedList<SolarisNumericGroupPrincipal>();
} else {
// overall authentication succeeded and commit succeeded,
// but someone else's commit failed
logout();
}
return true;
}
/**
* Logout the user
*
* <p> This method removes the Principals associated
* with the {@code Subject}.
*
* @exception LoginException if the logout fails
*
* @return true in all cases (this {@code LoginModule}
* should not be ignored).
*/
@SuppressWarnings("removal")
public boolean logout() throws LoginException {
if (debug) {
System.out.println("\t\t[SolarisLoginModule]: " +
"Entering logout");
}
if (subject.isReadOnly()) {
throw new LoginException ("Subject is Readonly");
}
// remove the added Principals from the Subject
subject.getPrincipals().remove(userPrincipal);
subject.getPrincipals().remove(UIDPrincipal);
subject.getPrincipals().remove(GIDPrincipal);
for (int i = 0; i < supplementaryGroups.size(); i++) {
subject.getPrincipals().remove(supplementaryGroups.get(i));
}
// clean out state
ss = null;
succeeded = false;
commitSucceeded = false;
userPrincipal = null;
UIDPrincipal = null;
GIDPrincipal = null;
supplementaryGroups = new LinkedList<SolarisNumericGroupPrincipal>();
if (debug) {
System.out.println("\t\t[SolarisLoginModule]: " +
"logged out Subject");
}
return true;
}
}

@ -1,89 +0,0 @@
/*
* Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.security.auth.module;
/**
* This class implementation retrieves and makes available Solaris
* UID/GID/groups information for the current user.
*
* @deprecated replaced by {@link UnixSystem}.
* This class is subject to removal in a future version of Java SE.
*/
@Deprecated(since="1.4", forRemoval=true)
public class SolarisSystem {
private native void getSolarisInfo();
protected String username;
protected long uid;
protected long gid;
protected long[] groups;
/**
* Instantiate a {@code SolarisSystem} and load
* the native library to access the underlying system information.
*/
public SolarisSystem() {
System.loadLibrary("jaas_unix");
getSolarisInfo();
}
/**
* Get the username for the current Solaris user.
*
* @return the username for the current Solaris user.
*/
public String getUsername() {
return username;
}
/**
* Get the UID for the current Solaris user.
*
* @return the UID for the current Solaris user.
*/
public long getUid() {
return uid;
}
/**
* Get the GID for the current Solaris user.
*
* @return the GID for the current Solaris user.
*/
public long getGid() {
return gid;
}
/**
* Get the supplementary groups for the current Solaris user.
*
* @return the supplementary groups for the current Solaris user.
*/
public long[] getGroups() {
return groups == null ? null : groups.clone();
}
}

@ -1,152 +0,0 @@
/*
* Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
#include <jni.h>
#include "com_sun_security_auth_module_SolarisSystem.h"
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
/* For POSIX-compliant getpwuid_r on Solaris */
#if defined(__solaris__)
#define _POSIX_PTHREAD_SEMANTICS
#endif
#include <pwd.h>
static void throwIllegalArgumentException(JNIEnv *env, const char *msg) {
jclass clazz = (*env)->FindClass(env, "java/lang/IllegalArgumentException");
if (clazz != NULL)
(*env)->ThrowNew(env, clazz, msg);
}
JNIEXPORT void JNICALL
Java_com_sun_security_auth_module_SolarisSystem_getSolarisInfo
(JNIEnv *env, jobject obj) {
int i;
long pwd_bufsize;
char *pwd_buf = NULL;
struct passwd pwd;
struct passwd* p = NULL;
jsize numSuppGroups = getgroups(0, NULL);
jfieldID fid;
jstring jstr;
jlongArray jgroups;
jlong *jgroupsAsArray;
gid_t *groups;
jclass cls;
pwd_bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);
if (pwd_bufsize == -1) {
pwd_bufsize = 1024;
}
pwd_buf = (char *)malloc(pwd_bufsize);
groups = (gid_t *)calloc(numSuppGroups, sizeof(gid_t));
if (pwd_buf == NULL || groups == NULL) {
if (pwd_buf != NULL) {
free(pwd_buf);
}
if (groups != NULL) {
free(groups);
}
cls = (*env)->FindClass(env,"java/lang/OutOfMemoryError");
if (cls != NULL) {
(*env)->ThrowNew(env, cls, NULL);
}
return;
}
cls = (*env)->GetObjectClass(env, obj);
if (getpwuid_r(getuid(), &pwd, pwd_buf, sizeof(pwd_buf), &p) != 0 &&
p != NULL && getgroups(numSuppGroups, groups) != -1) {
/*
* set username
*/
fid = (*env)->GetFieldID(env, cls, "username", "Ljava/lang/String;");
if (fid == 0) {
(*env)->ExceptionClear(env);
throwIllegalArgumentException(env, "invalid field: username");
goto cleanupAndReturn;
}
jstr = (*env)->NewStringUTF(env, pwd.pw_name);
if (jstr == NULL) {
goto cleanupAndReturn;
}
(*env)->SetObjectField(env, obj, fid, jstr);
/*
* set uid
*/
fid = (*env)->GetFieldID(env, cls, "uid", "J");
if (fid == 0) {
(*env)->ExceptionClear(env);
throwIllegalArgumentException(env, "invalid field: uid");
goto cleanupAndReturn;
}
(*env)->SetLongField(env, obj, fid, pwd.pw_uid);
/*
* set gid
*/
fid = (*env)->GetFieldID(env, cls, "gid", "J");
if (fid == 0) {
(*env)->ExceptionClear(env);
throwIllegalArgumentException(env, "invalid field: gid");
goto cleanupAndReturn;
}
(*env)->SetLongField(env, obj, fid, pwd.pw_gid);
/*
* set supplementary groups
*/
fid = (*env)->GetFieldID(env, cls, "groups", "[J");
if (fid == 0) {
(*env)->ExceptionClear(env);
throwIllegalArgumentException(env, "invalid field: groups");
goto cleanupAndReturn;
}
jgroups = (*env)->NewLongArray(env, numSuppGroups);
if (jgroups == NULL) {
goto cleanupAndReturn;
}
jgroupsAsArray = (*env)->GetLongArrayElements(env, jgroups, 0);
if (jgroupsAsArray == NULL) {
goto cleanupAndReturn;
}
for (i = 0; i < numSuppGroups; i++)
jgroupsAsArray[i] = groups[i];
(*env)->ReleaseLongArrayElements(env, jgroups, jgroupsAsArray, 0);
(*env)->SetObjectField(env, obj, fid, jgroups);
}
cleanupAndReturn:
free(pwd_buf);
free(groups);
return;
}

@ -34,7 +34,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import com.sun.security.auth.SolarisPrincipal;
import com.sun.security.auth.UnixPrincipal;
import javax.security.auth.Subject;
/*
@ -46,7 +46,7 @@ import javax.security.auth.Subject;
* permission javax.security.auth.AuthPermission \
* "modifyPrivateCredentials";
* permission javax.security.auth.PrivateCredentialPermission \
* "java.lang.String com.sun.security.auth.SolarisPrincipal \"user"", "read";
* "java.lang.String com.sun.security.auth.UnixPrincipal \"user"", "read";
* };
* The test verifies the following:
@ -71,7 +71,7 @@ public class Subset {
HashSet creds = new HashSet();
Subject emptys =
new Subject(false, //readOnly
Collections.singleton(new SolarisPrincipal("user")),
Collections.singleton(new UnixPrincipal("user")),
Collections.EMPTY_SET,
creds);
/* Test principals */
@ -104,7 +104,7 @@ public class Subset {
creds.add(Boolean.TRUE);
Subject sremove =
new Subject(false, //readOnly
Collections.singleton(new SolarisPrincipal("user")),
Collections.singleton(new UnixPrincipal("user")),
Collections.EMPTY_SET,
creds);
Set p2 = sremove.getPrivateCredentials();
@ -184,7 +184,7 @@ public class Subset {
creds1.add(new String("Exists"));
Subject scontain =
new Subject(false, //readOnly
Collections.singleton(new SolarisPrincipal("user")),
Collections.singleton(new UnixPrincipal("user")),
Collections.EMPTY_SET,
creds1);
p2 = scontain.getPrivateCredentials();
@ -237,7 +237,7 @@ public class Subset {
creds2.add("ghi");
Subject sstring =
new Subject(false, //readOnly
Collections.singleton(new SolarisPrincipal("user")),
Collections.singleton(new UnixPrincipal("user")),
Collections.EMPTY_SET,
creds2);
p2 = sstring.getPrivateCredentials();
@ -262,7 +262,7 @@ public class Subset {
creds4.add("Exists");
Subject scontain1 =
new Subject(false, //readOnly
Collections.singleton(new SolarisPrincipal("user")),
Collections.singleton(new UnixPrincipal("user")),
Collections.EMPTY_SET,
creds4);
Set p3 = scontain1.getPrivateCredentials();
@ -462,7 +462,7 @@ public class Subset {
creds.add(new Integer(1));
Subject s =
new Subject(false, //readOnly
Collections.singleton(new SolarisPrincipal("user")),
Collections.singleton(new UnixPrincipal("user")),
Collections.EMPTY_SET,
creds);
try {

@ -6,5 +6,5 @@ grant {
grant {
permission javax.security.auth.AuthPermission "modifyPrivateCredentials";
permission javax.security.auth.AuthPermission "modifyPublicCredentials";
permission javax.security.auth.PrivateCredentialPermission "java.lang.String com.sun.security.auth.SolarisPrincipal \"user\"", "read";
permission javax.security.auth.PrivateCredentialPermission "java.lang.String com.sun.security.auth.UnixPrincipal \"user\"", "read";
};

@ -1,5 +1,5 @@
/*
* Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2004, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -42,7 +42,6 @@ import javax.security.auth.x500.X500Principal;
import sun.security.provider.PolicyFile;
import com.sun.security.auth.UnixPrincipal;
import com.sun.security.auth.NTUserPrincipal;
import com.sun.security.auth.SolarisPrincipal;
public class Comparator {
@ -88,7 +87,7 @@ public class Comparator {
new X500Principal("cn=x500") };
private static final Principal[] badP = new Principal[] {
new SolarisPrincipal("bad") };
new UnixPrincipal("bad") };
public static class PCompare1 implements Principal {