Account Properties
The account.properties
configuration is used to define Users in TEDI and their respective auth schemes (JWT, Basic, etc).
You must define roles
and users
. All integrations will have an administrative API and thru Users and Roles you will grant explicit access to team members.
Roles
Roles are used to govern which services and APIs a user has access to.
Users must belong to roles that you define. When you create your integrations, those integrations will have their own set of administrative APIs as well as governance around who has access to invoke an API as part of an integration.
A User may belong to more than one Role. To specify multiples roles, use a comma-delimited string.
0.role.name = admin
1.role.name = qae
Roles
Use Roles to apply the principle of least priviledge.
Users
Users have a few basic properties:
- the user’s name
- which roles they belong to
- when the user expires
- auth scheme: basic, jwt, http-signature, certificate
You must use crypto-buddy to hash and encode secrets and passwords.
A User can only have one auth mechanic.
Basic Auth
For basic auth, TEDI will never know what the actually password is. TEDI only stores a hash of the password.
You can also store multiple passwords for a User; the purpose being to help password rotation.
To inidicate basic auth as the auth scheme, set auth.scheme=basic
0.user.name = tedi-1
0.user.roles = "admin"
0.user.expires = "2022-01-28"
0.user.auth.scheme = basic
0.0.basic.auth.pass = "$argon2id$v=19$m=64,t=1000,p=4$879sd8f7s9df87987f987f9s8d7f9s8d7f9sd87f9sd87f9s7dfs"
0.0.basic.auth.pass.encoding = hex
0.1.basic.auth.pass = "$argon2id$v=19$m=64,t=1000,p=4$89798f6s8df698s6d8f6s98d6f9s8d69s8df9s86d9f868d6f8sx"
0.1.basic.auth.pass.encoding = hex
Http Signatures
To use http-signatures, set the auth.scheme=httpsig
.
TEDI supports symmetric and asymmetric keys.
1.user.name = tedi-2
1.user.roles = "qae"
1.user.expires = "2022-01-26"
1.user.auth.scheme = httpsig
1.0.httpsig.debug = true
1.0.httpsig.key.name = key-name.key
1.0.httpsig.key.id = keyid
1.0.httpsig.date.validate=true
1.0.httpsig.date.disclose.range=true
1.0.httpsig.date.response.code=412
1.0.httpsig.date.range.duration=10m
JWT
TEDI supports symmetric and asymmetric keys.
2.user.name = tedi-3
2.user.roles = "admin"
2.user.expires = "2022-01-26"
2.user.auth.scheme = jws
2.0.jws.debug = true
2.0.jws.algo = RS256
2.0.jws.header.kid = tedi-keyid
2.0.jws.key.name = key.pub
2.0.jws.claim.exp.required = true
2.0.jws.claim.exp.clock.drift=300000
2.0.jws.claim.aud = tedi
2.0.jws.claim.iss = tedi
2.0.jws.claim.sub = tedi
2.0.jws.claim.jti = tedi
2.0.jws.claim.0.name = "xform"
2.0.jws.claim.0.value = "internal"
Certificate
4.user.name = tedi-4
4.user.roles = "admin,qae"
4.user.expires = "2022-01-26"
4.user.auth.scheme = cert
4.0.cert.name = "public-cert-name.pem"