Search in sources :

Example 1 with JWTAuth

use of io.vertx.ext.auth.jwt.JWTAuth in project vertx-auth by vert-x3.

the class AuthJWTExamples method example15.

public void example15(Vertx vertx) {
    JWTAuth provider = JWTAuth.create(vertx, new JWTAuthOptions().addPubSecKey(new PubSecKeyOptions().setAlgorithm("RS256").setPublicKey("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxPSbCQY5mBKFDIn1kggv\n" + "Wb4ChjrctqD4nFnJOJk4mpuZ/u3h2ZgeKJJkJv8+5oFO6vsEwF7/TqKXp0XDp6IH\n" + "byaOSWdkl535rCYR5AxDSjwnuSXsSp54pvB+fEEFDPFF81GHixepIbqXCB+BnCTg\n" + "N65BqwNn/1Vgqv6+H3nweNlbTv8e/scEgbg6ZYcsnBBB9kYLp69FSwNWpvPmd60e\n" + "3DWyIo3WCUmKlQgjHL4PHLKYwwKgOHG/aNl4hN4/wqTixCAHe6KdLnehLn71x+Z0\n" + "SyXbWooftefpJP1wMbwlCpH3ikBzVIfHKLWT9QIOVoRgchPU3WAsZv/ePgl5i8Co\n" + "qwIDAQAB").setSecretKey("MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDE9JsJBjmYEoUM\n" + "ifWSCC9ZvgKGOty2oPicWck4mTiam5n+7eHZmB4okmQm/z7mgU7q+wTAXv9Oopen\n" + "RcOnogdvJo5JZ2SXnfmsJhHkDENKPCe5JexKnnim8H58QQUM8UXzUYeLF6khupcI\n" + "H4GcJOA3rkGrA2f/VWCq/r4fefB42VtO/x7+xwSBuDplhyycEEH2Rgunr0VLA1am\n" + "8+Z3rR7cNbIijdYJSYqVCCMcvg8cspjDAqA4cb9o2XiE3j/CpOLEIAd7op0ud6Eu\n" + "fvXH5nRLJdtaih+15+kk/XAxvCUKkfeKQHNUh8cotZP1Ag5WhGByE9TdYCxm/94+\n" + "CXmLwKirAgMBAAECggEAeQ+M+BgOcK35gAKQoklLqZLEhHNL1SnOhnQd3h84DrhU\n" + "CMF5UEFTUEbjLqE3rYGP25mdiw0ZSuFf7B5SrAhJH4YIcZAO4a7ll23zE0SCW+/r\n" + "zr9DpX4Q1TP/2yowC4uGHpBfixxpBmVljkWnai20cCU5Ef/O/cAh4hkhDcHrEKwb\n" + "m9nymKQt06YnvpCMKoHDdqzfB3eByoAKuGxo/sbi5LDpWalCabcg7w+WKIEU1PHb\n" + "Qi+RiDf3TzbQ6TYhAEH2rKM9JHbp02TO/r3QOoqHMITW6FKYvfiVFN+voS5zzAO3\n" + "c5X4I+ICNzm+mnt8wElV1B6nO2hFg2PE9uVnlgB2GQKBgQD8xkjNhERaT7f78gBl\n" + "ch15DRDH0m1rz84PKRznoPrSEY/HlWddlGkn0sTnbVYKXVTvNytKSmznRZ7fSTJB\n" + "2IhQV7+I0jeb7pyLllF5PdSQqKTk6oCeL8h8eDPN7awZ731zff1AGgJ3DJXlRTh/\n" + "O6zj9nI8llvGzP30274I2/+cdwKBgQDHd/twbiHZZTDexYewP0ufQDtZP1Nk54fj\n" + "EpkEuoTdEPymRoq7xo+Lqj5ewhAtVKQuz6aH4BeEtSCHhxy8OFLDBdoGCEd/WBpD\n" + "f+82sfmGk+FxLyYkLxHCxsZdOb93zkUXPCoCrvNRaUFO1qq5Dk8eftGCdC3iETHE\n" + "6h5avxHGbQKBgQCLHQVMNhL4MQ9slU8qhZc627n0fxbBUuhw54uE3s+rdQbQLKVq\n" + "lxcYV6MOStojciIgVRh6FmPBFEvPTxVdr7G1pdU/k5IPO07kc6H7O9AUnPvDEFwg\n" + "suN/vRelqbwhufAs85XBBY99vWtxdpsVSt5nx2YvegCgdIj/jUAU2B7hGQKBgEgV\n" + "sCRdaJYr35FiSTsEZMvUZp5GKFka4xzIp8vxq/pIHUXp0FEz3MRYbdnIwBfhssPH\n" + "/yKzdUxcOLlBtry+jgo0nyn26/+1Uyh5n3VgtBBSePJyW5JQAFcnhqBCMlOVk5pl\n" + "/7igiQYux486PNBLv4QByK0gV0SPejDzeqzIyB+xAoGAe5if7DAAKhH0r2M8vTkm\n" + "JvbCFjwuvhjuI+A8AuS8zw634BHne2a1Fkvc8c3d9VDbqsHCtv2tVkxkKXPjVvtB\n" + "DtzuwUbp6ebF+jOfPK0LDuJoTdTdiNjIcXJ7iTTI3cXUnUNWWphYnFogzPFq9CyL\n" + "0fPinYmDJpkwMYHqQaLGQyg=")));
    String token = provider.generateToken(new JsonObject(), new io.vertx.ext.jwt.JWTOptions().setAlgorithm("RS256"));
}
Also used : JWTAuthOptions(io.vertx.ext.auth.jwt.JWTAuthOptions) PubSecKeyOptions(io.vertx.ext.auth.PubSecKeyOptions) JsonObject(io.vertx.core.json.JsonObject) JWTOptions(io.vertx.ext.auth.jwt.JWTOptions) JWTAuth(io.vertx.ext.auth.jwt.JWTAuth)

Example 2 with JWTAuth

use of io.vertx.ext.auth.jwt.JWTAuth in project vertx-auth by vert-x3.

the class AuthJWTExamples method example7.

public void example7(Vertx vertx, String username, String password) {
    JWTAuthOptions config = new JWTAuthOptions().setKeyStore(new KeyStoreOptions().setPath("keystore.jceks").setPassword("secret"));
    JWTAuth provider = JWTAuth.create(vertx, config);
    // on the verify endpoint once you verify the identity of the user by its username/password
    if ("paulo".equals(username) && "super_secret".equals(password)) {
        String token = provider.generateToken(new JsonObject().put("sub", "paulo"), new JWTOptions());
    // now for any request to protected resources you should pass this string in the HTTP header Authorization as:
    // Authorization: Bearer <token>
    }
}
Also used : JWTAuthOptions(io.vertx.ext.auth.jwt.JWTAuthOptions) JsonObject(io.vertx.core.json.JsonObject) JWTOptions(io.vertx.ext.auth.jwt.JWTOptions) KeyStoreOptions(io.vertx.ext.auth.KeyStoreOptions) JWTAuth(io.vertx.ext.auth.jwt.JWTAuth)

Example 3 with JWTAuth

use of io.vertx.ext.auth.jwt.JWTAuth in project vertx-examples by vert-x3.

the class Server method start.

@Override
public void start() throws Exception {
    Router router = Router.router(vertx);
    // Create a JWT Auth Provider
    JWTAuth jwt = JWTAuth.create(vertx, new JsonObject().put("keyStore", new JsonObject().put("type", "jceks").put("path", "keystore.jceks").put("password", "secret")));
    // this route is excluded from the auth handler (it represents your login endpoint)
    router.get("/api/newToken").handler(ctx -> {
        List<String> authorities = new ArrayList<>();
        for (String authority : ctx.request().params().getAll("authority")) {
            authorities.add(authority);
        }
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end(jwt.generateToken(new JsonObject(), new JWTOptions().setExpiresInSeconds(60).setPermissions(authorities)));
    });
    // protect the API (any authority is allowed)
    router.route("/api/protected").handler(JWTAuthHandler.create(jwt));
    router.get("/api/protected").handler(ctx -> {
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end("this secret is not defcon!");
    });
    // protect the API (defcon1 authority is required)
    router.route("/api/protected/defcon1").handler(JWTAuthHandler.create(jwt).addAuthority("defcon1"));
    router.get("/api/protected/defcon1").handler(ctx -> {
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end("this secret is defcon1!");
    });
    // protect the API (defcon2 authority is required)
    router.route("/api/protected/defcon2").handler(JWTAuthHandler.create(jwt).addAuthority("defcon2"));
    router.get("/api/protected/defcon2").handler(ctx -> {
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end("this secret is defcon2!");
    });
    // protect the API (defcon3 authority is required)
    router.route("/api/protected/defcon3").handler(JWTAuthHandler.create(jwt).addAuthority("defcon3"));
    router.get("/api/protected/defcon3").handler(ctx -> {
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end("this secret is defcon3!");
    });
    // Serve the non private static pages
    router.route().handler(StaticHandler.create());
    vertx.createHttpServer().requestHandler(router).listen(8080);
}
Also used : ArrayList(java.util.ArrayList) Router(io.vertx.ext.web.Router) JsonObject(io.vertx.core.json.JsonObject) JWTOptions(io.vertx.ext.jwt.JWTOptions) JWTAuth(io.vertx.ext.auth.jwt.JWTAuth)

Example 4 with JWTAuth

use of io.vertx.ext.auth.jwt.JWTAuth in project vertx-examples by vert-x3.

the class Server method start.

@Override
public void start() throws Exception {
    Router router = Router.router(vertx);
    // Create a JWT Auth Provider
    JWTAuth jwt = JWTAuth.create(vertx, new JsonObject().put("keyStore", new JsonObject().put("type", "jceks").put("path", "keystore.jceks").put("password", "secret")));
    // this route is excluded from the auth handler (it represents your login endpoint)
    router.get("/api/newToken").handler(ctx -> {
        List<String> authorities = new ArrayList<>();
        for (String authority : ctx.request().params().getAll("authority")) {
            authorities.add(authority);
        }
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end(jwt.generateToken(new JsonObject(), new JWTOptions().setExpiresInSeconds(60).setPermissions(authorities)));
    });
    router.route("/api/protected*").handler(JWTAuthHandler.create(jwt));
    router.get("/api/protected").handler(ctx -> {
        // protected the API (any authority is allowed)
        ctx.response().putHeader("Content-Type", "text/plain");
        ctx.response().end("this secret is not defcon!");
    });
    router.get("/api/protected/defcon1").handler(ctx -> {
        // protect the API (defcon1 authority is required)
        ctx.user().isAuthorised("defcon1", allowed -> {
            if (allowed.failed()) {
                ctx.fail(allowed.cause());
                return;
            }
            // user does not have the required authority
            if (!allowed.result()) {
                ctx.response().setStatusCode(403).end();
                return;
            }
            ctx.response().putHeader("Content-Type", "text/plain");
            ctx.response().end("this secret is defcon1!");
        });
    });
    router.get("/api/protected/defcon2").handler(ctx -> {
        // protect the API (defcon2 authority is required)
        ctx.user().isAuthorised("defcon2", allowed -> {
            if (allowed.failed()) {
                ctx.fail(allowed.cause());
                return;
            }
            // user does not have the required authority
            if (!allowed.result()) {
                ctx.response().setStatusCode(403).end();
                return;
            }
            ctx.response().putHeader("Content-Type", "text/plain");
            ctx.response().end("this secret is defcon2!");
        });
    });
    router.get("/api/protected/defcon3").handler(ctx -> {
        // protect the API (defcon3 authority is required)
        ctx.user().isAuthorised("defcon3", allowed -> {
            if (allowed.failed()) {
                ctx.fail(allowed.cause());
                return;
            }
            // user does not have the required authority
            if (!allowed.result()) {
                ctx.response().setStatusCode(403).end();
                return;
            }
            ctx.response().putHeader("Content-Type", "text/plain");
            ctx.response().end("this secret is defcon3!");
        });
    });
    // Serve the non private static pages
    router.route().handler(StaticHandler.create());
    vertx.createHttpServer().requestHandler(router).listen(8080);
}
Also used : ArrayList(java.util.ArrayList) Router(io.vertx.ext.web.Router) JsonObject(io.vertx.core.json.JsonObject) JWTOptions(io.vertx.ext.jwt.JWTOptions) JWTAuth(io.vertx.ext.auth.jwt.JWTAuth)

Example 5 with JWTAuth

use of io.vertx.ext.auth.jwt.JWTAuth in project vertx-web by vert-x3.

the class WebExamples method example51.

public void example51(Vertx vertx) {
    Router router = Router.router(vertx);
    JWTAuthOptions authConfig = new JWTAuthOptions().setKeyStore(new KeyStoreOptions().setType("jceks").setPath("keystore.jceks").setPassword("secret"));
    JWTAuth authProvider = JWTAuth.create(vertx, authConfig);
    router.route("/protected/*").handler(JWTAuthHandler.create(authProvider));
    router.route("/protected/somepage").handler(ctx -> {
    // some handle code...
    });
}
Also used : JWTAuthOptions(io.vertx.ext.auth.jwt.JWTAuthOptions) KeyStoreOptions(io.vertx.ext.auth.KeyStoreOptions) JWTAuth(io.vertx.ext.auth.jwt.JWTAuth)

Aggregations

JWTAuth (io.vertx.ext.auth.jwt.JWTAuth)13 JsonObject (io.vertx.core.json.JsonObject)12 JWTAuthOptions (io.vertx.ext.auth.jwt.JWTAuthOptions)10 KeyStoreOptions (io.vertx.ext.auth.KeyStoreOptions)5 PubSecKeyOptions (io.vertx.ext.auth.PubSecKeyOptions)4 JWTOptions (io.vertx.ext.auth.jwt.JWTOptions)4 JWTOptions (io.vertx.ext.jwt.JWTOptions)4 Router (io.vertx.ext.web.Router)3 JWTOptions (io.vertx.ext.auth.JWTOptions)2 ArrayList (java.util.ArrayList)2 Test (org.junit.Test)2 JsonArray (io.vertx.core.json.JsonArray)1 SecretOptions (io.vertx.ext.auth.SecretOptions)1 VertxTestBase (io.vertx.test.core.VertxTestBase)1 StandardCharsets (java.nio.charset.StandardCharsets)1 Base64 (java.util.Base64)1 Assert.assertNotEquals (org.junit.Assert.assertNotEquals)1