Jamf has decided to archive the NoMAD repos on GitHub. Going forward they aren’t going to receive any updates.
While they are read-only, they aren’t being deleted. That means that anyone who wants to fork and use the code is welcome to do so. Everything remains MIT licensed and open source.
The projects are still here and still open source, they just won’t be maintained by Jamf. Any existing issues or PRs have been closed.
You can see the official announcement on the Jamf Blog.
There is still an active user community on the MacAdmins Slack nomad channel.
As always, have fun and read the man pages.
macshome
Hi everyone! You have found your way to the repo for NoMAD Login AD, or NoLoAD for short. This project can be seen as a companion to our other AD authentication product for macOS, NoMAD. You can use either one independently from each other, and both contain all the bits and pieces you need to talk to AD.
NoLoAD is a replacement login window for macOS 10.12 and higher. It allows you to login to a Mac using Active Directory accounts, without the need to bind the Mac to AD and suffer all the foibles that brings.
The current production version of NoLoAD is 1.4.0
For those of you that are new to NoLo, the basic features are:
- You can login to a Mac using AD without being bound
- Just-in-time provisioning user provisioning to create a local account
- "Demobilization" of previously cached AD accounts
- Local accounts can always login
- Ability to enable FileVault on APFS without a logout
- Choose between a macOS-style loginscreen, or the older loginwindow types
- Customize the login screen with your own art and background
- Display a EULA for users to accept on login
- Create a keychain item for NoMAD
PasswordOverwriteSilenta Boolean to determine if the password should be silently overwritten when the AD authentication succeeds, should be used in conjunction withDenyLocal.ManageSecureTokensa Boolean to determine if the SecureToken management capabilites should be enabled. This utilizes a service account which can be modified from default using the below optional preferences.SecureTokenManagementEnableOnlyAdminUsersa Boolean to determine if the SecureToken service account should only enable administrative users created with NoMAD Login.SecureTokenManagementIconPatha String to determine the path of the icon to be used for the user, default is/Library/Security/SecurityAgentPlugins/NoMADLoginAD.bundle/Contents/Resources/NoMADFDEIcon.pngSecureTokenManagementOnlyEnableFirstUsera Boolean to determine if the NoMAD Login should only enable the first user that is eligable for a SecureToken, and delete the service account afterwards.SecureTokenManagementFullNamea String to define a custom Full Name for the SecureToken service account, default isNoMAD LoginSecureTokenManagementUIDan Integer or String to define a custom UID for the SecureToken service account, default is400SecureTokenManagementPasswordLocationa String to define a custom password storage location for the SecureToken service account password, default is/var/db/.nomadLoginSecureTokenPassword. NOTE: useprintfto write to the file and notechoSecureTokenManagementPasswordLengthan Integer to define a custom SecureToken service account password length, default is16SecureTokenManagementUsernamea String to define a custom username for the SecureToken service account, default is_nomadlogin- Added an overwrite button to the sync password screen in the event the user does not remember their password, which bootstraps into the
PasswordOverwriteSilentworkflow - Reqest from @Ehlers299 - Fixed an extraneous password check in the user demobilization mechanism that would cause demobilizations when the user is logging in at the FV2 window to not function
DemobilizeSaveAltSecurityIdentitiesa Boolean to determine if theAltSecurityIdentitiesuser record attribute should be preserved, useful when moving from mobile accounts with smart card mapping implemented.DemobilizeForcePasswordChecka Boolean to determine if a password input at the NoMAD login window will be required to demobilize, default isfalseRecursiveGroupLookupa Boolean to determine if group membership lookups should be done recursively, default isfalseMigrateUsersHidean array of Strings of the names of users that should be hidden from user migration canidates during selectionGuestUsera Boolean to determine if guest users should be allowed to login, default isfalseGuestUserAccountsan array of Strings of names that can be entered into the username field to trigger a guest user creation, default is["Guest", "guest"]GuestUserAccountPasswordPatha String to define the path to write out the guest users randomly generated password, defaults is to not write it outGuestUserFirsta String to define the first name of the guest user accountGuestUserLasta String to define the last name of the guest user accountAllowNetworkSelectiona Boolean to define if the network selection is hidden, default isfalse- System information has been added as a hidden button in the lower left hand corner of the the NoMAD Login Window
- Lowercase user supplied domain when checking against
AdditionalADDomainsso that the comparision is more sane. AdditionalADDomainListan array of Strings that will cause a pull down domain menu in the Sign In window. Users can select a domain from the menu and then only enter the shortname in the text field.- Mapping of NT Domain to AD Domain via
NTtoADDomainMappingsa Dictionary of Strings, e.g. [ NOMAD: nomad.menu], would allow a user to sign in as "NOMAD\user" and that would be converted to "user@nomad.menu" before authenticating to AD. AliasNTNameBool to define if the user's NT style name is added as an alias to the local account during account creation.AliasUPNBool to define if the users UPN is added as an alias to the local account during account creation.DefaultSystemInformationa String to define the system information to be shown by default, options areSerial,MAC,ComputerName,Hostname,SystemVersion, andIP, default is nothingCustomNoMADLocationa String to define the location of a custom NoMAD installation to support automatic ACL declaration whenKeychainAddis utilized, default is/Applications/NoMAD.app- Fixed a issue where
LocalFallbackused in conjunction withDenyLocalandPasswordOverwriteSilentwould cause unintentional password overwrites. UIDToola String to determine the path of an executable that is run when a new user is created. It is expected to return the UID that the user should be created with. It passes in the new users username as the first argument, default is to use the built in functionality- Extended support for the
com.apple.loginwindowdomain with new support of theLoginwindowTextkey
UseCNForFullNameFallbacka Boolean that determines if to use CN as the fullname on the account when the givenName and sn fields are blankPowerControlDisableda Boolean that determines if the powercontrol options should be disabled/hidden in the SignIn UI- Updated the new user home directory creation to fully populate all expected folders in prep for Catalina
DisableFDEAutoLoginnow respected under thecom.apple.loginwindowpreference domain- Fixed an issue with the German localization of the home directory
BackgroundImageAlphaan Integer from 0-10 which determines the alpha value for the background image in 10% increments, i.e. a value of3would be a 30% alpha This was broken before and is now fixed.DenyLocalBoolean determines if local user accounts are allowed to sign in, or if all auth is forced through AD.DenyLocalExcludedArray or strings of user shortnames that will be allowed to authenticate locally instead of via AD.DenyLoginUnlessGroupMemberArray of strings of AD group names. When an AD user is authenticating, only allow login if the user is a member of one of these groups.EnableFDERecoveryKeyPathString of a folder path where the recovery key will be stored. NoLo will create this folder if it does not already exist.EnableFDERekeyBoolean that determines if the FileVault personal recovery key should be rotated when a valid FileVault user signs in.LDAPServersArray of strings of LDAP servers that you would like to use for AD authentication instead of using SRV record lookup.LoginLogoAlphaan Integer from 0-10 which determines the alpha value for the logo image in 10% increments, i.e. a value of3would be a 30% alpha This was broken before and is now fixed.LoginLogoDatais working again.NotifyLogStyleTakes a string ofjamf,filewave,munkiornoneand will add the appropriate log file to the the Notify mechanism.ScriptPathPath to a script for the RunScript mechanism to run.ScriptArgsArray of strings of arguments to give the script being run by the RunScript mechanism.<<User>>will be replaced with the current user's shortname,<<First>>with the current user's first name,<<Last>>with the current user's last name,<<Principal>>with the current user's Kerberos principal.UseCNForFullNameUse the the user's cn from AD instead of attempting to create the user name from the first and last name attributes of the user's AD record.UsernameFieldPlaceholdertext to place into the user field in the loginwindow to give a hint as to what to enter.UserInputOutputPathstring determining the path where theuserinfo.plistwill be written.UserInputUIa rather complicated dictionary that contains the settings for up to 4 text fields and 4 pop up buttons that will be shown during the UserInput mechanism. Look in the ConfigSamples folder in the source for an example of this configuration profile.UserInputLogopath to a logo file to use for the UserInput mechanism.UserInputTitlestring for the UserInput mechanism title.UserInputMainTextstring for the UserInput text.
NoMADLoginAD:RunScriptwill run a script of your choosing as set by the preferences. This is typically marked asprivilegedto allow the script to run as root.NoMADLoginAD:Notifyruns the Notify screen. See the DEPNotify project for more information.NoMADLoginAD:UserInputdisplays up to 4 text fields and 4 pull down menus to allow the user to enter information during the login process.
- The Demobilize mechanism will work with mobile accounts from other services than just Apple's AD plugin.
- The Demobilze and Notify mechanisms can be used without the NoMAD Login login window UI.
- Built product with current Swift SDK.
- KeychainAdd mechanism also adds a
LastUservalue to the NoMAD preferences. This allows NoMAD to login on first launch. (#89) - EULA mechanism should only run when expect now. (#108)
- authchanger updated to prevent garbage being entered into authorizationdb. (#109)
- Support for more than one managed domain (#97)
- Support for FDE passthrough from EFI unlock to the Desktop for FileVault (#74 & #82)
- KeychainAdd mechanism allows for NoLoAD to add a NoMAD Keychain item or reset the Login keychain if passwords don't match. (#79)
- EULA mechanism allows for user acceptance of terms to complete login process
- Blured effect layer over the background image at login can have alpha adjustments. (#71)
- The placeholder text in the username field can be changed. (#96)
- Admin user creation can be gated by groups. (#32)
- Users created by NoMAD Login have an account attribute added to indicate so. (#26)
Please file any issues, or requested features, in the project issue tracker.
Getting started with NoLoAD is easy, but currently it takes a few steps. It's also easy to revert to the Apple login window in case you run in to any issues.
Installing is easy!
- Download NoMAD Login AD.
- You can just run the installer package that includes the
authchangertool and be done with it. The only reason not to do this is if you have made other changes to thesystem.login.consolerights. - Define your
ADDomainin themenu.nomad.login.adpreference domain.
Now you should be able to logout and find yourself staring at the majesty of NoMAD Login!
Take a look in our Wiki to see how to get started with Carthage and Xcode.
Using NoMAD Login AD is easy. Just enter your AD username and password in username@domain format and your password. If the domain is visible on the network, NoMAD Login AD will discover the domain details and then authenticate your account. Once that is done it will create a local account that matches the AD one and complete the login. You can then use NoMAD as you normally would from the menu bar to keep the accounts synchronized.
Since the created account is a local one, you won't suffer any network delays when logging in or unlocking your Mac. From the login window, NoLoAD will simply defer to the regular local login process for any local accounts. At this point you could even just go back to the Apple Loginwindow, but where is the fun in that?
Enticing you to stay now is the ability to customize the login experience with your own logos and background images. More info, and a gallery of options, can be found in the wiki.
When you decide that you've had enough it's easy to go back to the standard login window.
The easy way is to simply run /usr/local/bin authchanger -reset, followed by killall -HUP loginwindow to reload the login window.
Thanks to all of you for trying NoMAD Login AD! Please let us know about issues and features in the issue tracker. You can also find us on Slack in nomad and nomad-login.