Stormpath is a user management and authentication service. This tutorial covers using SaltStack to manage and take advantage of Stormpath's features.
Stormpath can be used for Salt's external authentication system. In order to do
this, the master should be configured with an apiid
, apikey
, and the ID
of the application
that is associated with the users to be authenticated:
stormpath:
apiid: 367DFSF4FRJ8767FSF4G34FGH
apikey: FEFREF43t3FEFRe/f323fwer4FWF3445gferWRWEer1
application: 786786FREFrefreg435fr1
Note
These values can be found in the Stormpath dashboard <https://api.stormpath.com/ui2/index.html#/>`_.
Users that are to be authenticated should be set up under the stormpath
dict under external_auth
:
external_auth:
stormpath:
larry:
- .*
- '@runner'
- '@wheel'
Keep in mind that while Stormpath defaults the username associated with the
account to the email address, it is better to use a username without an @
sign in it.
Stormpath accounts can be managed via either an execution or state module. In order to use either, a minion must be configured with an API ID and key.
stormpath:
apiid: 367DFSF4FRJ8767FSF4G34FGH
apikey: FEFREF43t3FEFRe/f323fwer4FWF3445gferWRWEer1
directory: efreg435fr1786786FREFr
application: 786786FREFrefreg435fr1
Some functions in the stormpath
modules can make use of other options. The
following options are also available.
The ID of the directory that is to be used with this minion. Many functions
require an ID to be specified to do their work. However, if the ID of a
directory
is specified, then Salt can often look up the resource in
question.
The ID of the application that is to be used with this minion. Many functions
require an ID to be specified to do their work. However, if the ID of a
application
is specified, then Salt can often look up the resource in
question.
With the stormpath
configuration in place, Salt can be used to configure
accounts (which may be thought of as users) on the Stormpath service. The
following functions are available.
Create an account on the Stormpath service. This requires a directory_id
as
the first argument; it will not be retrieved from the minion configuration. An
email
address, password
, first name (givenName
) and last name
(surname
) are also required. For the full list of other parameters that may
be specified, see:
http://docs.stormpath.com/rest/product-guide/#account-resource
When executed with no errors, this function will return the information about the account, from Stormpath.
salt myminion stormpath.create_account <directory_id> shemp@example.com letmein Shemp Howard
Show all accounts on the Stormpath service. This will return all accounts, regardless of directory, application, or group.
salt myminion stormpath.list_accounts
'''
Show the details for a specific Stormpath account. An account_id
is normally
required. However, if am email
is provided instead, along with either a
directory_id
, application_id
, or group_id
, then Salt will search the
specified resource to try and locate the account_id
.
salt myminion stormpath.show_account <account_id>
salt myminion stormpath.show_account email=<email> directory_id=<directory_id>
Update one or more items for this account. Specifying an empty value will clear it for that account. This function may be used in one of two ways. In order to update only one key/value pair, specify them in order:
salt myminion stormpath.update_account <account_id> givenName shemp
salt myminion stormpath.update_account <account_id> middleName ''
In order to specify multiple items, they need to be passed in as a dict. From the command line, it is best to do this as a JSON string:
salt myminion stormpath.update_account <account_id> items='{"givenName": "Shemp"}
salt myminion stormpath.update_account <account_id> items='{"middlename": ""}
When executed with no errors, this function will return the information about the account, from Stormpath.
Delete an account from Stormpath.
salt myminion stormpath.delete_account <account_id>
Show all directories associated with this tenant.
salt myminion stormpath.list_directories
Stormpath resources may be managed using the state system. The following states are available.
Ensure that an account exists on the Stormpath service. All options that are
available with the stormpath.create_account
function are available here.
If an account needs to be created, then this function will require the same
fields that stormpath.create_account
requires, including the password
.
However, if a password changes for an existing account, it will NOT be updated
by this state.
curly@example.com:
stormpath_account.present:
- directory_id: efreg435fr1786786FREFr
- password: badpass
- firstName: Curly
- surname: Howard
- nickname: curly
It is advisable to always set a nickname
that is not also an email address,
so that it can be used by Salt's external authentication module.
Ensure that an account does not exist on Stormpath. As with
stormpath_account.present
, the name
supplied to this state is the
email
address associated with this account. Salt will use this, with or
without the directory
ID that is configured for the minion. However, lookups
will be much faster with a directory ID specified.