rabbitmq-server/deps/rabbitmq_auth_backend_http/examples/README.md

195 lines
6.2 KiB
Markdown
Raw Normal View History

2017-02-14 23:51:47 +08:00
# RabbitMQ HTTP Authn/Authz Backend Examples
## Python Example
2017-01-12 20:06:32 +08:00
`rabbitmq_auth_backend_django` is a very minimalistic [Django](https://www.djangoproject.com/) 1.10+ application
that rabbitmq-auth-backend-http can authenticate against. It's really
not designed to be anything other than an example.
2017-02-14 23:51:47 +08:00
### Running the Example
2017-01-12 20:06:32 +08:00
Run `start.sh` to launch it after [installing Django](https://docs.djangoproject.com/en/1.10/topics/install/). You may need to
hack `start.sh` if you are not running Debian or Ubuntu.
The app will use a local SQLite database. It uses the standard
Django authentication database. All users get access to all vhosts and
resources.
2017-02-14 23:51:47 +08:00
### HTTP Endpoint Examples
2017-01-12 20:06:32 +08:00
If you're not familiar with Django, urls.py and auth/views.py may be
most illuminating.
2017-02-14 23:51:47 +08:00
## Spring Boot Example
2017-02-14 23:51:47 +08:00
`rabbitmq_auth_backend_spring_boot` is a simple [Spring Boot](https://projects.spring.io/spring-boot/)
application that rabbitmq-auth-backend-http can authenticate against. It's really
not designed to be anything other than an example.
## Running the Example
Import the example as a Maven project in your favorite IDE or run it directly from the command line:
2018-04-01 04:51:21 +08:00
``` shell
mvn spring-boot:run
```
2017-02-14 23:51:47 +08:00
The application listens on the 8080 port.
### HTTP Endpoint Examples
Have a look at the `AuthBackendHttpController`. There's only one user: `guest`,
with the `guest` password. This implementation also checks the
2018-04-01 04:51:21 +08:00
routing key starts with an `a` when publishing to a topic exchange
or consuming from a topic. (an example of [topic authorisation](http://next.rabbitmq.com/access-control.html#topic-authorisation)).
2017-10-11 04:00:19 +08:00
## ASP.NET Web API Example
2017-10-11 04:00:19 +08:00
`rabbitmq_auth_backend_webapi_dotnet` is a very minimalistic ASP.NET Web API application
the plugin can authenticate against. It's really
**not designed to be anything other than an example**.
### Running the Example
2017-10-11 04:00:19 +08:00
Open the WebApiHttpAuthService.csproj in Visual Studio 2017, More details about prerequisites can be found below.
First, configure RabbitMQ [authn and authz backend](http://www.rabbitmq.com/access-control.html) to use this
plugin using the below config example.
Then Build the solution and run it from Visual Studio.
`Controllers/AuthController.cs` contains the authentication and authorization logic.
By default All users get access to all vhosts and resources.
User "authuser" will be denied access.
### HTTP Endpoint Examples
2017-10-11 04:00:19 +08:00
Have a look at `AuthController`.
2017-10-11 04:00:19 +08:00
### Development Environment
2017-10-11 04:00:19 +08:00
This example was developed using
2017-10-11 04:00:19 +08:00
* .NET Framework 4.5
* Visual Studio 2017
* Windows 10 and IIS v10.0
2018-04-01 04:51:21 +08:00
2017-10-11 04:00:19 +08:00
It is possible to build and run service from Visual Studio browse the endpoint without using IIS.
Port number may vary but will likely be `62190`.
2017-10-11 04:00:19 +08:00
When the example is hosted on IIS, port 80 will be used by default.
2018-07-29 20:12:43 +08:00
## ASP.NET Core 2.1 Example
`rabbitmq_auth_backend_webapi_dotnetcore` is version of `rabbitmq_auth_backend_webapi_dotnet` designed for ASP.NET Core 2.1. It uses
same concepts as parent project, but it also adds some static typing for requests and responses.
### Running the Example
Open the WebApiHttpAuthService.sln in Visual Studio 2017.
First, configure RabbitMQ [authn and authz backend](http://www.rabbitmq.com/access-control.html) to use this
plugin using the below config example.
Then Build the solution and run it from Visual Studio.
`Controllers/AuthController.cs` contains the authentication and authorization logic.
By default All users get access to all vhosts and resources.
User "authuser" will be denied access.
### HTTP Endpoint Examples
Have a look at `AuthController`.
### Development Environment
This example was developed using
* ASP.NET Core 2.1
* Visual Studio 2017 (Visual Studio Code)
* Windows 10
It is possible to build and run service from Visual Studio using IIS or from Visual Studio or Visual Studio Code using cross-platform server Kestrel.
2018-03-31 16:47:51 +08:00
## PHP Boot Example
2018-04-01 04:51:21 +08:00
`rabbitmq_auth_backend_php` is a minimalistic PHP application that this plugin can authenticate against.
2018-03-31 16:47:51 +08:00
It's really not designed to be anything other than an example.
### Running the Example
2018-04-01 04:51:21 +08:00
The example requires PHP >= 5.4 and [Composer](https://getcomposer.org/).
2018-03-31 16:47:51 +08:00
The `rabbitmq-auth-backend-http-php` library depend on `symfony/security` and `symfony/http-foundation` components.
Go to the `rabbitmq_auth_backend_php` folder and run `composer install`.
```bash
2018-04-01 04:51:21 +08:00
cd rabbitmq_auth_backend_php/
composer install
2018-03-31 16:47:51 +08:00
```
Now you can run the PHP 5.4 server (server at http://127.0.0.1:8080)
```
2018-04-01 04:51:21 +08:00
composer start
2018-03-31 16:47:51 +08:00
```
Ensure the log file is writable `rabbitmq-auth-backend-http/examples/rabbitmq_auth_backend_php/var/log.log`.
2018-04-01 04:51:21 +08:00
Go to `http://localhost:8080/user.php?username=Anthony&password=anthony-password`, all work properly if you see `Allow administrator`
2018-03-31 16:47:51 +08:00
### HTTP Endpoint Examples
Have a look at the `bootstrap.php`. By default this example implement the same authorization rules than RabbitMQ.
Users list:
| User | password | is admin | Vhost | Configure regex | Write regex | Read regex | tags |
|--|--|--|--|--|--|--|--|
| Anthony | anthony-password | ✔️ | All | All | All | All | administrator |
| James | bond | | / | .* | .* | .* | management |
| Roger | rabbit | | | | | | monitoring |
| bunny | bugs | | | | | | policymaker |
2017-10-11 04:00:19 +08:00
### rabbitmq.config Example
2018-03-31 16:47:51 +08:00
Dont forget to set the proper url in your rabbit config file
2017-10-11 04:00:19 +08:00
Below is a [RabbitMQ config file](http://www.rabbitmq.com/configure.html) example to go with this
example:
2018-04-01 04:51:21 +08:00
the new style config format
``` ini
auth_backends.1 = internal
2018-03-31 16:47:51 +08:00
auth_backends.2 = http
2018-04-01 04:51:21 +08:00
auth_http.user_path = http://localhost:62190/auth/user.php
auth_http.vhost_path = http://localhost:62190/auth/vhost.php
auth_http.resource_path = http://localhost:62190/auth/resource.php
2018-03-31 16:47:51 +08:00
auth_http.topic_path = http://localhost:62190/auth/topic.php
```
2018-04-01 04:51:21 +08:00
Or in the classic format:
2018-03-31 16:47:51 +08:00
2017-10-11 04:00:19 +08:00
``` erlang
[
{rabbit, [
{auth_backends, [rabbit_auth_backend_internal,rabbit_auth_backend_http]}
]
},
{
rabbitmq_auth_backend_http,
[
{http_method, post},
{user_path, "http://localhost:62190/auth/user"},
{vhost_path, "http://localhost:62190/auth/vhost"},
{resource_path, "http://localhost:62190/auth/resource"},
{topic_path, "http://localhost:62190/auth/topic"}
]
}
].
2017-10-11 04:00:19 +08:00
```
2017-10-11 04:00:19 +08:00
See [RabbitMQ Access Control guide](http://www.rabbitmq.com/access-control.html) for more information.