* Shave off an IAM lookup if the user is the anonymous user
* Fix build
* If authz failures are turned off, make the token type unknown instead of invalid
* Change returned token format when authz failures are disabled
* Change logic back
* Fix logic
* Encrypt tokens on the way out and decrypt on the way in
This isn't a security feature related to tokens specifically; it's so
that we can discard cryptographically bad tokens before we ever hit the
DB. This way we can't pass through a DDoS to the database due to
fetching obviously invalid token values.
I'm using base58 to encode the resulting value as there aren't great
base62 options, and allowing base64 / and + values can hamper usability
by creating copying/highlighting breaks.
* Change auth validity feedback
Move from a bool indicating validity to lack of an error. This allows
the error to be directly returned and typed.
* Fix erroneous line
* Allow updating accounts (not username or pw).
* Updating new field names to LoginName.
* Adding creation with password test.
* Fixing documentation for WithLoginName
* Bump generated proto code
* Add argon2 conf sql and proto files
* Add generated code for argon2 conf
* Add Resources for Argon2 configuration
* Add get and set Configuration to repository
* Add current config reference to AuthMethod
* Fix authmethod_test
* Fix TestAccount_New
* Add WithConfiguration to options
* Add sql views for current configuration
* Fix SetTableName
* Remove duplicate testAccounts function
* Make tests clearer
* Fix comment
* Rename test variable
* Use NewPrivateId function for private Ids
* Refactor: rename public_id to private_id for password_conf and password_credential
* Remove bad comment
* Check if embedded argon2 configuration is nil
* Add checks around the WithConfiguration option
* Use spaces not tabs in proto file
* Add doc to explain choice of oplog ticket
* Verify oplog in test
* Add base SQL and protobuf files
* Add options and public Ids
* Add AuthMethod and Account resources
* Add repository
* Add CreateAuthMethod to repository
* Add CreateAccount method to repository
* Remove redundant foreign keys
* Document relationships between iam and auth tables
* Document relationships between auth and auth_password tables
* Add documentation for subtype triggers
* Use wt_scope_id domain type for scope_id
* Refactor: move test helper function
* Remove check from SetTableName
* Remove check from another SetTableName
* Use org scope in tests
* Remove handling of CreateTime and UpdateTime from docs
Don't rely on token for scopes collection actions
This requires `scope_id` to be passed (via query param) for actions on
the scopes collection; that is, listing or creating. However, it removes
the dependency on using the token for the scope of the command. For
actions on a specific scope, we use the given ID to determine the scope
we should be operating at, doing a lookup if necessary.
Existing tests have been updated. Of particular note, the CORS test was
already operating on the scopes collection so served as a good test to
ensure that from an API level the scope_id parameter was being parsed
and passed through (the tests fail without adding that query parameter
in).
* Move verification to a shared package
The verifier is constructed at HTTP request time and added to the
context. It can then be called from appropriate handlers with
standardized error handling after all the routing.
I intentionally did not add to the handlers yet as I am a good distance
into the scope updates and didn't want to cause even more merge
conflicts. So at the moment authz is again disabled, but once the scope
updates are done, this will be integrated back in.