mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
45 lines
1 KiB
Python
45 lines
1 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
Provide authentication using OpenStack Keystone
|
|
|
|
:depends: - keystoneclient Python module
|
|
"""
|
|
|
|
from __future__ import absolute_import, print_function, unicode_literals
|
|
|
|
try:
|
|
from keystoneclient.v2_0 import client
|
|
from keystoneclient.exceptions import AuthorizationFailure, Unauthorized
|
|
except ImportError:
|
|
pass
|
|
|
|
|
|
def get_auth_url():
|
|
"""
|
|
Try and get the URL from the config, else return localhost
|
|
"""
|
|
try:
|
|
return __opts__["keystone.auth_url"]
|
|
except KeyError:
|
|
return "http://localhost:35357/v2.0"
|
|
|
|
|
|
def auth(username, password):
|
|
"""
|
|
Try and authenticate
|
|
"""
|
|
try:
|
|
keystone = client.Client(
|
|
username=username, password=password, auth_url=get_auth_url()
|
|
)
|
|
return keystone.authenticate()
|
|
except (AuthorizationFailure, Unauthorized):
|
|
return False
|
|
|
|
|
|
if __name__ == "__main__":
|
|
__opts__ = {}
|
|
if auth("test", "test"):
|
|
print("Authenticated")
|
|
else:
|
|
print("Failed to authenticate")
|