<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements.  See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<html>
    <body>
        <h2>Shiro Security Library.</h2>
        <p>
            This library provide integration with the
            <a href="http://shiro.apache.org/" target="_blank">Apache Shiro</a> Java Security Framework.
        </p>
        <blockquote>
            Apache Shiro is a powerful and easy-to-use Java security framework that performs authentication,
            authorization, cryptography, and session management. With Shiro's easy-to-understand API, you can quickly
            and easily secure any application – from the smallest mobile applications to the largest web and enterprise
            applications.
        </blockquote>
    </body>
</html>