Skip to content

Commit 5fa6c04

Browse files
committed
added history file
1 parent 2c03586 commit 5fa6c04

File tree

3 files changed

+172
-6
lines changed

3 files changed

+172
-6
lines changed

History.md

+162
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
# What's New In XCreds #
2+
3+
## XCreds 3.1 ##
4+
5+
### Active Directory Login ###
6+
New username and password window allows logging in with local user or Active Directory (if ADDomain key is defined).
7+
8+
### New Username and Password Window ###
9+
We no longer use the macOS login window and use the new XCreds username/password window. This allows for faster switching and Active Directory login.
10+
11+
### Admin Group ###
12+
13+
If group membership is returned in the "groups" claim and matches the group defined in the "CreateAdminIfGroupMember" preference, the user will be created as admin.
14+
15+
### Override Preference Script ###
16+
17+
Most preferences can now be overwritten by specifying a script at the path defined by "settingsOverrideScriptPath". This script, if it exists, owned by root, and has permissions 755 (writable only by root, readable and executable by all) must return a valid plist that defines the key/value pairs to override in preferences. This allows for basing preferences based on the local state of the machine. It is important for the "localAdminUserName" and "localAdminPassword" keys. See Reset Keychain for more information on this. The overide script can also be used for querying the local state and setting preferences. For example, to randomly set the background image, a sample script "settingsOverrideScriptPath" defines a script:
18+
19+
20+
!/bin/sh
21+
dir="/System/Library/Desktop Pictures"
22+
desktoppicture=`/bin/ls -1 "$dir"/*.heic | sort --random-sort | head -1`
23+
24+
cat /usr/local/xcreds/override.plist|sed "s|DESKTOPPICTUREPATH|${desktoppicture}|g"
25+
26+
The plist would defined as:
27+
28+
<?xml version="1.0" encoding="UTF-8"?>
29+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
30+
<plist version="1.0">
31+
<dict>
32+
<key>loginWindowBackgroundImageURL</key>
33+
<string>file://DESKTOPPICTUREPATH</string>
34+
</dict>
35+
</plist>
36+
37+
38+
### Reset Keychain ##
39+
In prior versions of XCreds, the ability to reset the keychain if the user forgets their local password would fail due to the lack of a admin user with a secure token. This would cause the "PasswordOverwriteSilent" to fail.
40+
41+
The "settingsOverrideScriptPath" (see above) can return the admin username and password of an admin account that has a secure token. This admin user is then used to reset the user's keychain if they forgot their local password. This can either be done with user prompting or silently.
42+
43+
The script can find those keys via curl, in system keychain, or in a LAPS file and return the values inside the plist that is returned. This gives flexablity in determining the security required for the local admin username and password.
44+
45+
Note that XCreds assumes an admin user with a secure token already exists on the machine and XCreds does not create or manage this user. If you manage local admin via a LAPS system, you can return the password from the local password file.
46+
47+
An example of an override script to return username and password are as follows:
48+
49+
Override Script:
50+
51+
` !/bin/sh`
52+
` dir="/System/Library/Desktop Pictures"`
53+
` desktoppicture=/bin/ls -1 "$dir"/*.heic | sort --random-sort | head -1`
54+
` `
55+
` #this is provided as an example. DO NOT KEEP ADMIN CREDENTIALS ON DISK! Use curl or other method for getting them temporarily.`
56+
` admin_username="tcadmin"`
57+
` admin_password="twocanoes"`
58+
` `
59+
` cat /usr/local/xcreds/override.plist | sed "s|LOCALADMINUSERNAME|${admin_username}|g" | sed "s|LOCALADMINPASSWORD|${admin_password}|g" `
60+
61+
plist:
62+
63+
`<?xml version="1.0" encoding="UTF-8"?>`
64+
` <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">`
65+
` <plist version="1.0">`
66+
` <dict>`
67+
` <key>localAdminUserName</key>`
68+
` <string>LOCALADMINUSERNAME</string>`
69+
` <key>localAdminPassword</key>`
70+
` <string>LOCALADMINPASSWORD</string>`
71+
` </dict>`
72+
` </plist>`
73+
74+
75+
## New Keys
76+
77+
**ADDomain**
78+
79+
The desired AD domain
80+
81+
**CreateAdminIfGroupMember**
82+
83+
List of groups that should have its members created as local administrators. Set as an Array of Strings of the group name.
84+
85+
**shouldSwitchToLoginWindowWhenLocked**
86+
87+
When set to true and the user locks the current session, XCreds will tell the system to switch to Login Window. The current session will stay active but the user will login with the XCreds Login Window to resume the session.
88+
89+
**settingsOverrideScriptPath**
90+
91+
Script to override defaults. Must return valid property list with specified defaults. Script must exist at path, be owned by root and only writable by root.
92+
93+
**localAdminUserName**
94+
95+
Username of local admin user. DO NOT SET THIS IN PREFERENCES. It is recommended to set this with the settingsOverrideScriptPath script. This user is used to reset the keychain if the user forgets their local password and to setup a secure token for newly created users.
96+
97+
**localAdminPassword**
98+
99+
Password of local admin user. DO NOT SET THIS IN PREFERENCES. It is recommended to set this with the settingsOverrideScriptPath script. This user is used to reset the keychain if the user forgets their local password and to setup a secure token for newly created users.
100+
101+
**shouldFindPasswordElement**
102+
103+
Selects the password element field in the web page by finding a form element that has bullets (input is password)
104+
105+
**shouldShowCloudLoginByDefault**
106+
107+
Determine if the mac login window or the cloud login window is shown by default
108+
109+
**shouldShowMacLoginButton**
110+
111+
Show the Mac Login Window button in XCreds Login
112+
113+
114+
## Version 3.0 Build 3607 ##
115+
116+
Released 2023-04-19
117+
118+
- Updated license
119+
- Fixed typo
120+
- Fixed issue with crash if time is too far off
121+
- Fixed regression for password change not capturing new password on Azure
122+
- Added trial license
123+
- Version 2.4
124+
- Added 802.1x support; added support for pref key for finding password based on type=password
125+
- Fixed changing wifi not dismissing dialog
126+
- Fixed issue with autorefresh
127+
- Added frontmost when prompting for keychain password
128+
- Fixed crashing issue due to null refreshview outlet
129+
- Fixed names and links in manifest
130+
- Tweaked text for user space refresh token window and added pref to show or hide
131+
- Updated sample config
132+
- Fixed focus issue
133+
- Fixed login window size and background image
134+
- Added in login window height/width min value of 100
135+
- Added key for customizing return to XCreds; added preference and ability to automatically refresh login window
136+
- Updated language on keychain option and added pref in manifest
137+
- Added remove keychain option
138+
139+
## Version 2.3
140+
- Added more logging for id token
141+
- Removed progress screen overlay because it was hiding filevault
142+
- Added sub as local user account if other methods not available; added some additional logging
143+
- Removed test time
144+
- Fixed edge case when not showing xcreds login when logging out
145+
- Fixed shouldShowCloudLoginByDefault not working
146+
- Fixed timer issue
147+
- Removed show prefs menu
148+
- Implemented PasswordOverwriteSilent
149+
- Implemented KeychainReset
150+
- Added credit to script
151+
- Added startup script
152+
- Username hint was not being set
153+
- Renamed mapped prefs with a prefix
154+
- Changed case of keys
155+
- Made keys lowercase for mappings
156+
- Added new key for OIDC mapping
157+
158+
## Version 2.2
159+
- Added mappings for user info
160+
161+
## Version 2.1
162+
- Initial release

xCreds.xcodeproj/project.pbxproj

+10-6
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@
123123
76BEF7FA28726C700013E2A1 /* AuthorizationDBManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76BEF7F928726C700013E2A1 /* AuthorizationDBManager.swift */; };
124124
76BEF8002872A3030013E2A1 /* [email protected] in Resources */ = {isa = PBXBuildFile; fileRef = 76BEF7FE2872A3030013E2A1 /* [email protected] */; };
125125
76BEF8012872A3030013E2A1 /* loginwindow.png in Resources */ = {isa = PBXBuildFile; fileRef = 76BEF7FF2872A3030013E2A1 /* loginwindow.png */; };
126+
76C63A322A22872700810C53 /* History.md in Resources */ = {isa = PBXBuildFile; fileRef = 76C63A312A22872700810C53 /* History.md */; };
126127
76CB9077287FBEEA00C70D0C /* Helper+URLDecode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76CB9076287FBEEA00C70D0C /* Helper+URLDecode.swift */; };
127128
76CB9078287FBEEA00C70D0C /* Helper+URLDecode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76CB9076287FBEEA00C70D0C /* Helper+URLDecode.swift */; };
128129
76CB907B2880E41E00C70D0C /* LogShim.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7632E3A02873497C00E37923 /* LogShim.swift */; };
@@ -332,6 +333,7 @@
332333
76BEF7F928726C700013E2A1 /* AuthorizationDBManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthorizationDBManager.swift; path = XCredsLoginPlugIn/LoginWindow/AuthorizationDBManager.swift; sourceTree = SOURCE_ROOT; };
333334
76BEF7FE2872A3030013E2A1 /* [email protected] */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "[email protected]"; sourceTree = "<group>"; };
334335
76BEF7FF2872A3030013E2A1 /* loginwindow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = loginwindow.png; sourceTree = "<group>"; };
336+
76C63A312A22872700810C53 /* History.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = History.md; sourceTree = "<group>"; };
335337
76CB9076287FBEEA00C70D0C /* Helper+URLDecode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Helper+URLDecode.swift"; sourceTree = "<group>"; };
336338
76CB907C288112AF00C70D0C /* xcreds_login.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = xcreds_login.sh; sourceTree = "<group>"; };
337339
76D7ADF9284EB15000332EBC /* TCSUnifiedLogger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TCSUnifiedLogger.m; sourceTree = "<group>"; };
@@ -568,6 +570,7 @@
568570
76EE069127FD1D00009E0F3A = {
569571
isa = PBXGroup;
570572
children = (
573+
76C63A312A22872700810C53 /* History.md */,
571574
760418E12A133C960051411B /* NoMAD_ADAuth.framework */,
572575
760418CC2A1331710051411B /* NomadLogin */,
573576
76873E2E2A107736001418A9 /* DefaultsHelper.swift */,
@@ -871,6 +874,7 @@
871874
764D8133284D14A500B3EE54 /* Credits.rtf in Resources */,
872875
76673CD229D3CFF900452848 /* errorpage.html in Resources */,
873876
764D812D284BCC7400B3EE54 /* VerifyOIDCPassword.xib in Resources */,
877+
76C63A322A22872700810C53 /* History.md in Resources */,
874878
764D8127284BC1C300B3EE54 /* LoginPasswordWindowController.xib in Resources */,
875879
76EE06A327FD1D01009E0F3A /* MainMenu.xib in Resources */,
876880
769032362890EAB10043E9F3 /* WifiWindowController.xib in Resources */,
@@ -1091,7 +1095,7 @@
10911095
CLANG_ENABLE_MODULES = YES;
10921096
CODE_SIGN_STYLE = Automatic;
10931097
COMBINE_HIDPI_IMAGES = YES;
1094-
CURRENT_PROJECT_VERSION = 4080;
1098+
CURRENT_PROJECT_VERSION = 4081;
10951099
DEFINES_MODULE = YES;
10961100
DEVELOPMENT_TEAM = UXP6YEHSPW;
10971101
FRAMEWORK_SEARCH_PATHS = (
@@ -1128,7 +1132,7 @@
11281132
CLANG_ENABLE_MODULES = YES;
11291133
CODE_SIGN_STYLE = Automatic;
11301134
COMBINE_HIDPI_IMAGES = YES;
1131-
CURRENT_PROJECT_VERSION = 4080;
1135+
CURRENT_PROJECT_VERSION = 4081;
11321136
DEFINES_MODULE = YES;
11331137
DEVELOPMENT_TEAM = UXP6YEHSPW;
11341138
FRAMEWORK_SEARCH_PATHS = (
@@ -1193,7 +1197,7 @@
11931197
CODE_SIGN_ENTITLEMENTS = "XCreds Login Overlay/XCreds_Login_Overlay.entitlements";
11941198
CODE_SIGN_STYLE = Automatic;
11951199
COMBINE_HIDPI_IMAGES = YES;
1196-
CURRENT_PROJECT_VERSION = 4080;
1200+
CURRENT_PROJECT_VERSION = 4081;
11971201
DEVELOPMENT_TEAM = UXP6YEHSPW;
11981202
ENABLE_HARDENED_RUNTIME = YES;
11991203
FRAMEWORK_SEARCH_PATHS = (
@@ -1229,7 +1233,7 @@
12291233
CODE_SIGN_ENTITLEMENTS = "XCreds Login Overlay/XCreds_Login_Overlay.entitlements";
12301234
CODE_SIGN_STYLE = Automatic;
12311235
COMBINE_HIDPI_IMAGES = YES;
1232-
CURRENT_PROJECT_VERSION = 4080;
1236+
CURRENT_PROJECT_VERSION = 4081;
12331237
DEVELOPMENT_TEAM = UXP6YEHSPW;
12341238
ENABLE_HARDENED_RUNTIME = YES;
12351239
FRAMEWORK_SEARCH_PATHS = (
@@ -1378,7 +1382,7 @@
13781382
CODE_SIGN_ENTITLEMENTS = XCreds/xCreds.entitlements;
13791383
CODE_SIGN_STYLE = Automatic;
13801384
COMBINE_HIDPI_IMAGES = YES;
1381-
CURRENT_PROJECT_VERSION = 4080;
1385+
CURRENT_PROJECT_VERSION = 4081;
13821386
DEVELOPMENT_TEAM = UXP6YEHSPW;
13831387
ENABLE_HARDENED_RUNTIME = YES;
13841388
FRAMEWORK_SEARCH_PATHS = (
@@ -1413,7 +1417,7 @@
14131417
CODE_SIGN_ENTITLEMENTS = XCreds/xCreds.entitlements;
14141418
CODE_SIGN_STYLE = Automatic;
14151419
COMBINE_HIDPI_IMAGES = YES;
1416-
CURRENT_PROJECT_VERSION = 4080;
1420+
CURRENT_PROJECT_VERSION = 4081;
14171421
DEVELOPMENT_TEAM = UXP6YEHSPW;
14181422
ENABLE_HARDENED_RUNTIME = YES;
14191423
FRAMEWORK_SEARCH_PATHS = (

0 commit comments

Comments
 (0)