| [//]: # " Copyright (c) 2015, 2018 Oracle and/or its affiliates. All rights reserved. " |
| [//]: # " " |
| [//]: # " This program and the accompanying materials are made available under the " |
| [//]: # " terms of the Eclipse Distribution License v. 1.0, which is available at " |
| [//]: # " http://www.eclipse.org/org/documents/edl-v10.php. " |
| [//]: # " " |
| [//]: # " SPDX-License-Identifier: BSD-3-Clause " |
| |
| HTTPS Server Example - GlassFish |
| ================================ |
| |
| This example demonstrates how to develop secure RESTful "Hello world" |
| web service with a Servlet 2.5 container. |
| |
| Contents |
| -------- |
| |
| The example consists of just one Java class: |
| |
| `org.glassfish.jersey.examples.https.glassfish.resources.HelloWorldResource` |
| |
| A resource class that produces a textual response to an HTTP GET request. |
| |
| The mapping of the URI path space is presented in the following table: |
| |
| URI path | Resource class | HTTP methods |
| ------------------- | -------------------- | -------------- |
| **_/helloworld_** | HelloWorldResource | GET |
| |
| Running the Example |
| ------------------- |
| |
| Run the example as follows: |
| |
| Create war package |
| |
| > mvn clean package |
| |
| Setup GlassFish 4.0 (installed at `AS_HOME=<install_dir>/glassfish4`): |
| |
| Add new security realm called "`myRealm`" |
| - Start GlassFish using asadmin `$AS_HOME/bin/asadmin start-domain` |
| - Access Admin console, assuming the use of default admin port, at |
| <http://localhost:4848> |
| - Navigate in Admin console to: |
| `Configurations -> server-config -> Security -> Realms`, click on |
| "`New...`" |
| - Create user and set password for user `myUser` (click on "`myRealm`" |
| -> "`Manage Users`" -> "`New...`"); |
| - **Ensure** "`User ID:`" set to "`myUser`" **and** |
| "`Group List:`" set to "`Users`" |
| - Enter password **`myPass`** in "`New Password:`" and |
| "`Confirm New Password:`" text fields |
| - Add one other user name `joeUser` (click on "`myRealm`" -> |
| "`Manage Users`" -> "`New...`"); |
| - **Ensure** "`User ID:`" set to "`joeUser`" **and** |
| "`Group List:`" set to "`Users`" |
| - Enter password **`joePass`** in "`New Password:`" and |
| "`Confirm New Password:`" text fields |
| |
| Check `web.xml` and `sun-web.xml` to understand how role mappings are |
| configured. [This |
| blog](http://blogs.oracle.com/bobby/entry/simplified_security_role_mapping) |
| is also helpful in helping to clarify role mappings. |
| Deploy `https-server-glassfish.war` as a Web Application |
| - Admin console: select `Applications`, click on "`Deploy...`". Select |
| file `./target/https-server-glassfish.war` |
| - or you can use command line: |
| `$AS_HOME/bin/asadmin deploy ./target/https-server-glassfish.war` |
| |
| From a web browser, visit: |
| |
| - <https://localhost:8181/https-server-glassfish-webapp/helloworld> |
| - Enter either Username `myUser` and Password `myPass` or, Username `joeUser` and Password `joePass` |
| - If entered Username `myUser` and Password `myPass`, verify that |
| **expected output**: `Sending "Hello World" to user "myUser"` was displayed |
| - If entered Username `joeUser` and Password `joePass`, verify that |
| **expected output**: `Sending "Hello World" to user "joeUser"` was displayed |
| |
| Running the Negative Example |
| ---------------------------- |
| |
| Run the example as follows: |
| |
| 1. Create war package |
| |
| > mvn clean package |
| |
| 2. setup GlassFish 4.0 (installed at |
| `AS_HOME=<install_dir>/glassfish4`): |
| |
| - Follow the steps described in the "**setup GlassFish 3.1**" |
| section from the previous chapter "**Running the Example**" but |
| instead of adding the user "`joeUser`" to the "`Group List:`" of |
| "`Users`" set "`Group List:`" for this user to "`OtherUsers`" |
| |
| 3. From a web browser, visit: |
| |
| - <https://localhost:8181/https-server-glassfish-webapp/helloworld> |
| - Enter Username `joeUser` and Password `joePass`, verify that **expected output** |
| looks like: `HTTP Status 403 - Access to the requested resource has been denied` |