[ 
https://issues.apache.org/jira/browse/KNOX-3016?focusedWorklogId=909242&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-909242
 ]

ASF GitHub Bot logged work on KNOX-3016:
----------------------------------------

                Author: ASF GitHub Bot
            Created on: 11/Mar/24 15:55
            Start Date: 11/Mar/24 15:55
    Worklog Time Spent: 10m 
      Work Description: lmccay commented on code in PR #876:
URL: https://github.com/apache/knox/pull/876#discussion_r1519964319


##########
gateway-provider-security-jwt/src/main/java/org/apache/knox/gateway/provider/federation/jwt/filter/JWTFederationFilter.java:
##########
@@ -238,10 +241,33 @@ public Pair<TokenType, String> getWireToken(final 
ServletRequest request) {
           }
       }
 
+      /*
+      POST /{tenant}/oauth2/v2.0/token HTTP/1.1
+      Host: login.microsoftonline.com:443
+      Content-Type: application/x-www-form-urlencoded
+
+      client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
+      &scope=https%3A%2F%2Fgraph.microsoft.com%2F.default
+      &client_secret=sampleCredentials
+      &grant_type=client_credentials
+       */
+
+      // Let's check whether this is a client credentials oauth request or 
whether
+      // the token has been configured for another usecase specific header
       if (parsed == null) {
-          token = request.getParameter(this.paramName);
-          if (token != null) {
-            parsed = Pair.of(TokenType.JWT, token);
+          String grantType = request.getParameter(GRANT_TYPE);
+          if (CLIENT_CREDENTIALS.equals(grantType)) {
+            // this is indeed a client credentials flow client_id and
+            // client_secret are expected now the client_id will be in
+            // the token as the token_id so we will get that later
+            token = request.getParameter(CLIENT_SECRET);
+            parsed = Pair.of(TokenType.Passcode, token);
+          }

Review Comment:
   I can buy that. I'll change that and fix the type in the other comment.





Issue Time Tracking
-------------------

    Worklog Id:     (was: 909242)
    Time Spent: 50m  (was: 40m)

> Add Support for Client Credentials Flow with KnoxTokens
> -------------------------------------------------------
>
>                 Key: KNOX-3016
>                 URL: https://issues.apache.org/jira/browse/KNOX-3016
>             Project: Apache Knox
>          Issue Type: Bug
>          Components: JWT
>            Reporter: Larry McCay
>            Assignee: Larry McCay
>            Priority: Major
>             Fix For: 2.1.0
>
>          Time Spent: 50m
>  Remaining Estimate: 0h
>
> Adding support for integrations to Knox proxied services and APIs via OAuth 
> style cllient credentials flow. This allows an integration that is provided a 
> CLIENT_ID and CLIENT_SECRET to authenticate to Knox and directly access 
> proxied services with those or exchange those credentials for short lived JWT 
> based access, id and refresh tokens.
> This change introduces only the acceptance of the Knox TokenID and Passcode 
> tokens as CLIENT_ID and CLIENT_SECRET in a standard OAuth 2.0 client 
> credentials flow request body. This body will contain the following params:
> 1. grant_type and it will be "client_credentials"
> 2. client_id which will be the KnoxToken tokenId or KnoxID
> 3. client_secret which will be the passcode token for which we store the hash
> Authentication using this flow will result in the effective user being what 
> is provided as the CLIENT_ID.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to