Browse Source

added meta code, fixed properties to hybrid

Grega Bremec 2 years ago
parent
commit
444cec242b

+ 49 - 4
hello/src/main/java/com/redhat/training/GreetingResource.java

@@ -11,6 +11,8 @@ import javax.ws.rs.core.MediaType;
 
 import org.eclipse.microprofile.jwt.JsonWebToken;
 
+import io.quarkus.oidc.OidcConfigurationMetadata;
+import io.quarkus.oidc.UserInfo;
 import io.quarkus.security.Authenticated;
 import io.quarkus.security.identity.SecurityIdentity;
 
@@ -21,9 +23,23 @@ public class GreetingResource {
     SecurityIdentity securityIdentity;
 
     @Inject
+    OidcConfigurationMetadata provider;
+
+    @Inject
+    UserInfo userInfo;
+
+    @Inject
     JsonWebToken accessToken;
 
     @GET
+    @Path("/languages")
+    @Produces(MediaType.APPLICATION_JSON)
+    @PermitAll
+    public String getLanguages() {
+        return "[\"en\", \"es\", \"fr\"]";
+    }
+
+    @GET
     @Produces(MediaType.TEXT_PLAIN)
     @PermitAll
     public String hello(@HeaderParam("Accept-Language") String language) {
@@ -74,13 +90,42 @@ public class GreetingResource {
     @GET
     @Path("/whoami")
     @Produces(MediaType.TEXT_PLAIN)
-    @PermitAll
     public String whoAmI() {
         return this.securityIdentity.getPrincipal().getName() + " " +
                 this.securityIdentity.getRoles().toString() + ": " +
-                (accessToken != null ?
-                    "token issued by " + accessToken.getIssuer() + " on " + accessToken.getIssuedAtTime() + " " +
-                    "for " + accessToken.getSubject() + " until " + accessToken.getExpirationTime() + " " +
+                (this.accessToken != null ?
+                    "token issued by " + accessToken.getIssuer() + " " +
+                    "on " + accessToken.getIssuedAtTime() + " " +
+                    "for " + accessToken.getSubject() + " " +
+                    "until " + accessToken.getExpirationTime() + " " +
                     "with claims " + accessToken.getClaimNames() : "no JWT");
     }
+
+    @GET
+    @Path("/oidc")
+    @Produces(MediaType.TEXT_PLAIN)
+    public String getProviderInfo() {
+        return "issuer: " + this.provider.getIssuer() + ",\n" +
+                "auth at: " + this.provider.getAuthorizationUri() + ",\n" +
+                "introspect at: " + this.provider.getIntrospectionUri() + ",\n" +
+                "end session at: " + this.provider.getEndSessionUri() + ",\n" +
+                "web key set at: " + this.provider.getJsonWebKeySetUri() + ",\n" +
+                "token at: " + this.provider.getTokenUri() + ",\n" +
+                "userinfo at: " + this.provider.getUserInfoUri() + ",\n" +
+                "supports: " + this.provider.getSupportedScopes().toString();
+    }
+
+    @GET
+    @Path("/userinfo")
+    @Produces(MediaType.APPLICATION_JSON)
+    public String getUserInfo() {
+        return this.userInfo.getUserInfoString();
+    }
+
+    @GET
+    @Path("/jwt")
+    @Produces(MediaType.TEXT_PLAIN)
+    public String getJwt() {
+        return this.accessToken.getRawToken();
+    }
 }

+ 5 - 4
hello/src/main/resources/application.properties

@@ -6,13 +6,14 @@ quarkus.oidc.client-id=sample-client
 %dev.quarkus.oidc.credentials.secret=CHANGEME
 quarkus.oidc.credentials.secret=CHANGEME
 # Can be service, web-app, or hybrid
-quarkus.oidc.application-type=web-app
-quarkus.http.auth.permission.authenticated.paths=/*
-quarkus.http.auth.permission.authenticated.policy=authenticated
+quarkus.oidc.application-type=hybrid
+# Code-based authorization policy. Not necessary if annotations are used.
+#quarkus.http.auth.permission.authenticated.paths=/*
+#quarkus.http.auth.permission.authenticated.policy=authenticated
 # May help with realmRoles mapper configuration
 #quarkus.oidc.roles.source=[idtoken,accesstoken,userinfo]
 # Calls UserInfo endpoint and adds "userinfo" attribute to SecurityIdentity
-#quarkus.oidc.authentication.user-info-required=true
+quarkus.oidc.authentication.user-info-required=true
 # Access token verification
 #quarkus.oidc.token.issuer=???
 #quarkus.oidc.token.audience=??? (String or String[])