Commit graph

274 commits

Author SHA1 Message Date
Tim Möhlmann
a88181b611 move server routest test 2023-09-22 14:44:34 +03:00
Tim Möhlmann
b12bb7a1f1 cleanup tokenHandler 2023-09-22 14:40:56 +03:00
Tim Möhlmann
57e8b19a8b unit tests for error handling 2023-09-22 10:02:11 +03:00
Tim Möhlmann
6f45991600 remove unuse ValidateAuthRequestV2 function 2023-09-22 07:57:42 +03:00
Tim Möhlmann
46839e095b run integration tests against both Server and Provider 2023-09-21 19:15:03 +03:00
Tim Möhlmann
af2d2942a1 copy and modify the routes test for the legacy server 2023-09-21 18:13:38 +03:00
Tim Möhlmann
c98291a6a7 check if client credential client is authenticated 2023-09-21 12:19:03 +03:00
Tim Möhlmann
aae3492f7b input validation and concrete handlers 2023-09-20 21:45:06 +03:00
Tim Möhlmann
81d42b061d define handlers, routes 2023-09-13 19:13:53 +03:00
Tim Möhlmann
fe3f98a4f9 rewrite auth request validation 2023-09-13 18:03:50 +03:00
Tim Möhlmann
f4dac05713 error handling 2023-09-12 11:17:59 +03:00
Tim Möhlmann
6993769f06 implement remaining server methods 2023-09-11 17:34:27 +03:00
Tim Möhlmann
2b08c53e49 implement remaining token grant type methods 2023-09-11 16:31:31 +03:00
Tim Möhlmann
2902a81161 intermediate commit with some methods implemented 2023-09-08 10:42:27 +03:00
Tim Möhlmann
4fcda01738 refelct the format from the proposal 2023-09-06 15:59:56 +03:00
Tim Möhlmann
c340ed9ed5 complete interface docs 2023-09-05 00:28:03 +03:00
Tim Möhlmann
cf3a87c4c3 allow any response type 2023-09-05 00:05:09 +03:00
Tim Möhlmann
d6a9c0bbb9 first draft of a new server interface 2023-09-04 23:33:51 +03:00
Tim Möhlmann
daf82a5e04
chore(deps): migrage jose to go-jose/v3 (#433)
closes #390
2023-09-01 14:33:16 +03:00
Tim Möhlmann
0879c88399
feat: add slog logging (#432)
* feat(op): user slog for logging

integrate with golang.org/x/exp/slog for logging.
provide a middleware for request scoped logging.

BREAKING CHANGES:

1. OpenIDProvider and sub-interfaces get a Logger()
method to return the configured logger;
2. AuthRequestError now takes the complete Authorizer,
instead of only the encoder. So that it may use its Logger() method.
3. RequestError now takes a Logger as argument.

* use zitadel/logging

* finish op and testing
without middleware for now

* minimum go version 1.19

* update go mod

* log value testing only on go 1.20 or later

* finish the RP and example

* ping logging release
2023-08-29 14:07:45 +02:00
Tim Möhlmann
6708ef4c24
feat(rp): return oidc.Tokens on token refresh (#423)
BREAKING CHANGE:
- rename RefreshAccessToken to RefreshToken
- RefreshToken returns *oidc.Tokens instead of *oauth2.Token

This change allows the return of the id_token in an explicit manner,
as part of the oidc.Tokens struct.
The return type is now consistent with the CodeExchange function.

When an id_token is returned, it is verified.
In case no id_token was received,
RefreshTokens will not return an error.

As per specifictation:
https://openid.net/specs/openid-connect-core-1_0.html#RefreshTokenResponse

Upon successful validation of the Refresh Token,
the response body is the Token Response of Section 3.1.3.3
except that it might not contain an id_token.

Closes #364
2023-08-18 14:36:39 +02:00
Tim Möhlmann
e8262cbf1f
chore: cleanup unneeded device storage methods (#399)
BREAKING CHANGE, removes methods from DeviceAuthorizationStorage:

- GetDeviceAuthorizationByUserCode
- CompleteDeviceAuthorization
- DenyDeviceAuthorization

The methods are now moved to examples as something similar can be
userful for implementers.
2023-05-26 10:06:33 +02:00
Tim Möhlmann
d5a9bd6d0e
feat: generic Userinfo and Introspect functions (#389)
BREAKING CHANGE: rp.Userinfo and rs.Introspect now require
a type parameter.
2023-05-05 12:36:37 +00:00
Giulio Ruggeri
e43ac6dfdf
fix: modify ACRValues parameter type to space separated strings (#388)
Co-authored-by: Giulio Ruggeri <giulio.ruggeri@posteitaliane.it>
2023-05-03 10:27:28 +00:00
Tim Möhlmann
8dff7ddee0 Merge branch 'main' into main-to-next 2023-04-18 12:32:04 +03:00
David Sharnoff
f0d46593e0
feat: rp.RefreshAccessToken() now may provide an updated IDToken (#365) 2023-04-13 16:37:50 +03:00
Thomas Hipp
312c2a07e2
fix: Only set GrantType once (#353) (#367)
This fixes an issue where, when using the device authorization flow, the
grant type would be set twice. Some OPs don't accept this, and fail when
polling.

With this fix the grant type is only set once, which will make some OPs
happy again.

Fixes #352
2023-04-13 16:04:58 +03:00
Tim Möhlmann
8730a1685e
feat: custom endpoint for device authorization (#368) 2023-04-13 11:25:49 +02:00
Tim Möhlmann
44f8403574
feat: get issuer from context for device auth (#363)
* feat: get issuer from context for device auth

* use distinct UserFormURL and UserFormPath

- Properly deprecate UserFormURL and default to old behaviour,
to prevent breaking change.

- Refactor unit tests to test both cases.

* update example
2023-04-11 20:29:17 +02:00
Tim Möhlmann
057538d555
fix: resolve nil pointer panic in Authorize (#358)
When ParseAuthorizeRequest received an invalid URL,
for example containing a semi-colon `;`,
AuthRequestError used to panic.
This was because a typed nil was passed as a interface argument.
The nil check inside AuthRequestError always resulted in false,
allowing access through the nil pointer.

Fixes #315
2023-04-05 10:02:37 +02:00
Livio Spring
c72aa8f9a1
fix: use Form instead of PostForm in ClientIDFromRequest (#360) 2023-04-04 13:45:30 +02:00
Livio Spring
dc2bdc6202
fix: improve error handling when getting ClientIDFromRequest (#359) 2023-04-04 12:48:18 +02:00
Thomas Hipp
c778e8329c
feat: Allow modifying request to device authorization endpoint (#356)
* feat: Allow modifying request to device authorization endpoint

This change enables the caller to set URL parameters when calling the
device authorization endpoint.

Fixes #354

* Update device authorization example
2023-04-03 14:40:29 +02:00
Thomas Hipp
1a2db3683f
fix: Only set GrantType once (#353)
This fixes an issue where, when using the device authorization flow, the
grant type would be set twice. Some OPs don't accept this, and fail when
polling.

With this fix the grant type is only set once, which will make some OPs
happy again.

Fixes #352
2023-03-29 07:51:10 +00:00
Tim Möhlmann
b7d18bfd02
chore: document non-standard glob client (#328)
* op: correct typo

rename checkURIAginstRedirects to checkURIAgainstRedirects

* chore: document standard deviation when using globs

add example on how to toggle the underlying
client implementation based on DevMode.

---------

Co-authored-by: David Sharnoff <dsharnoff@singlestore.com>
2023-03-28 14:58:57 +03:00
Tim Möhlmann
adebbe4c32
chore: replace gorilla/schema with zitadel/schema (#348)
Fixes #302
2023-03-28 14:57:27 +03:00
David Sharnoff
e1d50faf9b fix: do not modify userInfo when marshaling 2023-03-28 12:58:34 +03:00
Tim Möhlmann
be3cc13c27
fix: merge user info claims into id token claims (#349)
oidc IDTokenClaims.SetUserInfo did not set the claims map from user info.
This fix merges the claims map into the IDToken Claims map.
2023-03-27 16:41:09 +03:00
David Sharnoff
c9555c7f1b
feat: add CanSetUserinfoFromRequest interface (#347) 2023-03-24 18:55:41 +02:00
Tim Möhlmann
6af94fded0
feat: add context to all client calls (#345)
BREAKING CHANGE
closes #309
2023-03-23 15:31:38 +01:00
Tim Möhlmann
33c716ddcf
feat: merge the verifier types (#336)
BREAKING CHANGE:

- The various verifier types are merged into a oidc.Verifir.
- oidc.Verfier became a struct with exported fields

* use type aliases for oidc.Verifier

this binds the correct contstructor to each verifier usecase.

* fix: handle the zero cases for oidc.Time

* add unit tests to oidc verifier

* fix: correct returned field for JWTTokenRequest

JWTTokenRequest.GetIssuedAt() was returning the ExpiresAt field.
This change corrects that by returning IssuedAt instead.
2023-03-22 19:18:41 +02:00
Tim Möhlmann
a08ce50091 fix: correct returned field for JWTTokenRequest
JWTTokenRequest.GetIssuedAt() was returning the ExpiresAt field.
This change corrects that by returning IssuedAt instead.

This bug was introduced in #283
2023-03-21 11:46:42 +02:00
Tim Möhlmann
115813ee38 fix: handle the zero cases for oidc.Time 2023-03-20 17:18:11 +02:00
Tim Möhlmann
c8cf15e266 upgrade this module to v3 2023-03-20 13:38:21 +02:00
Tim Möhlmann
890a7f3ed4
feat: GetUserinfo helper method for IDTokenClaims (#337) 2023-03-20 11:06:32 +02:00
Tim Möhlmann
57fb9f77aa
chore: replace gorilla/mux with go-chi/chi (#332)
BREAKING CHANGE:
The returned router from `op.CreateRouter()` is now a `chi.Router`

Closes #301
2023-03-17 16:36:02 +01:00
Tim Möhlmann
0476b5946e Merge branch 'next' into main-next
prepare the merge of next into main by resolving merge conflicts.
2023-03-15 16:26:32 +02:00
Tim Möhlmann
c6820ba88a
fix: unmarshalling of scopes in access token (#327)
The Scopes field in accessTokenClaims should be a  SpaceDelimitedArray,
in order to allow for correct unmarshalling.

Fixes #318

* adjust test data
2023-03-15 14:44:49 +01:00
Tim Möhlmann
26d8e32636
chore: test all routes
Co-authored-by: David Sharnoff <dsharnoff@singlestore.com>
2023-03-15 14:32:14 +01:00
Tim Möhlmann
711a194b50 fix: allow RFC3339 encoded time strings
Fixes #292
2023-03-15 15:18:33 +02:00