Uniform authentication method for HttpSender#7941
Conversation
core/src/main/java/org/frankframework/http/AbstractHttpSession.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/ClientCredentialsQueryParameters.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/ClientCredentialsQueryParameters.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/ClientCredentialsBasicAuth.java
Outdated
Show resolved
Hide resolved
| */ | ||
| RESOURCE_OWNER_PASSWORD_CREDENTIALS_QUERY_PARAMETERS; | ||
|
|
||
| public IAuthenticator newAuthenticator(AbstractHttpSession session) throws HttpAuthenticationException { |
There was a problem hiding this comment.
Ik zou dit eerder verwachten in AbstractOauthAuthenticator ipv in de enum
There was a problem hiding this comment.
Snap ik. Er zijn veel soorten manieren om te authenticaten, dus AbstractOauthAuthenticator zal niet altijd als superclass gebruikt worden zoals bijvoorbeeld bij saml. Vandaar dat ik het hier neer heb gezet.
There was a problem hiding this comment.
Dan nog vind ik een enum hier niet de juiste plaats voor
There was a problem hiding this comment.
Waar zou je het dan naar toe verplaatsen?
There was a problem hiding this comment.
Een AuthenticatorFactory misschien?
Ik vind het zelf nog niet heel storend om het in de enum te doen maar vind het switch-statement niet mooi.
core/src/main/java/org/frankframework/http/AbstractHttpSession.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/AbstractOauthAuthenticator.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/AbstractOauthAuthenticator.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/OauthResponseDto.java
Outdated
Show resolved
Hide resolved
...n/java/org/frankframework/http/authentication/ResourceOwnerPasswordCredentialsBasicAuth.java
Outdated
Show resolved
Hide resolved
.../org/frankframework/http/authentication/ResourceOwnerPasswordCredentialsQueryParameters.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/frankframework/http/authentication/HttpSenderAuthenticationTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/frankframework/http/authentication/HttpSenderAuthenticationTest.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/AbstractHttpSession.java
Outdated
Show resolved
Hide resolved
| UrlEncodedFormEntity body = new UrlEncodedFormEntity(formParameters, DEFAULT_INPUT_STREAM_ENCODING); | ||
|
|
||
| HttpPost request = new HttpPost(uri); | ||
| request.addHeader(body.getContentType()); |
There was a problem hiding this comment.
Deze call zou niet moeten hoeven dacht ik, de contenttype van de entity is de default? In de HttpSender doen we het iig niet 😃
There was a problem hiding this comment.
De Content-Type header wordt niet toegevoegd aan de request als ik die regel weghaal.
There was a problem hiding this comment.
Dat zou betekenen dat het in de rest can de (huidige) code fout zou zijn. Overal wordt het content type aan de entity gehangen, en de HttpEntityEnclosingRequestBase (HttpPost) zou deze klakkeloos over moeten nemen 🍓
core/src/main/java/org/frankframework/http/authentication/AbstractOauthAuthenticator.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/frankframework/http/authentication/HttpSenderAuthenticationTest.java
Show resolved
Hide resolved
….java Co-authored-by: Niels Meijer <nielsmeijer@hotmail.com>
…ttps://github.com/frankframework/frankframework into 3045/uniform-authentication-method-for-httpsender
tnleeuw
left a comment
There was a problem hiding this comment.
De meeste opmerkingen die ik heb zijn geloof ik relatief kleinigheden.
| */ | ||
| RESOURCE_OWNER_PASSWORD_CREDENTIALS_QUERY_PARAMETERS; | ||
|
|
||
| public IAuthenticator newAuthenticator(AbstractHttpSession session) throws HttpAuthenticationException { |
There was a problem hiding this comment.
Een AuthenticatorFactory misschien?
Ik vind het zelf nog niet heel storend om het in de enum te doen maar vind het switch-statement niet mooi.
core/src/main/java/org/frankframework/http/authentication/AbstractOauthAuthenticator.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/AbstractOauthAuthenticator.java
Outdated
Show resolved
Hide resolved
core/src/main/java/org/frankframework/http/authentication/ClientCredentialsBasicAuth.java
Outdated
Show resolved
Hide resolved
...n/java/org/frankframework/http/authentication/ResourceOwnerPasswordCredentialsBasicAuth.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/frankframework/http/authentication/HttpSenderAuthenticationTest.java
Outdated
Show resolved
Hide resolved
core/src/test/java/org/frankframework/http/authentication/OAuthAccessTokenKeycloakTest.java
Outdated
Show resolved
Hide resolved
…hAccessTokenKeycloakTest.java
| } | ||
| } | ||
| void testGetAccessToken(AbstractHttpSession.OauthAuthenticationMethod oauthAuthenticationMethod, boolean shouldResolveSuccessfully) throws Exception { | ||
| assumeFalse(TestAssertions.isTestRunningOnGitHub()); |
There was a problem hiding this comment.
Dit statement komt te laat -- het gaat al lang fout in de static test setup, voordat individuele test-methods worden aangeroepen.
| log.warn("Thread [{}] executing task [{}] exceeds timeout of [{}] s, interrupting. Created from source point:", | ||
| timeoutThread.getName(), description, timeout, source); |
There was a problem hiding this comment.
@nielsm5 Hier heb ik iets gesleuteld om te kunnen debuggen waarom een test fout ging -- er werd een TimeoutGuard getriggered waarvan we niet wisten waar die vandaan kwam.
Met deze stacktrace konden we dat wel zien.
Willen we deze extra log er in laten zitten bij iedere warning van een TimeoutGuard? Of willen we dat er conditioneel in hebben / alleen bij loglevel DEBUG?
There was a problem hiding this comment.
Het zat er al in (alleen bij debug) toch? als het goed draaien we onze tests ook op dit level. je kan in de if(log.isdebugenabled) een log.error gooien, dan is hij iets prominenter.
There was a problem hiding this comment.
Ik had een stacktrace toegevoegd aan de warn log.
Ik heb die nu verplaatst naar debug level en de oorspronkelijke warn log hersteld.
| String responseBody = EntityUtils.toString(response.getEntity()); | ||
|
|
||
| if (response.getStatusLine().getStatusCode() != 200) { | ||
| tg.cancel(); |
There was a problem hiding this comment.
Dit was de missende tg.cancel().
Ik vond het niet de moeite waard om hem te checken en een timeout-exception te gooien, en daarmee dan de status-code line in de exception kwijt te raken.
De tg.cancel() miste omdat ik bij Thomas erop aangedrongen had, het niet in de finally te doen. 🫣
core/src/main/java/org/frankframework/http/AbstractHttpSession.java
Outdated
Show resolved
Hide resolved
….java Co-authored-by: Niels Meijer <nielsmeijer@hotmail.com>
|



Closes #3045