Handle Token/Endpoint authentication
This is essentially the Admin token where your authentication will always use a given token and have no means of querying information from within that token blob. Change-Id: Ia4317836d6fc1e62c65a1dcbd84c820d90832dc4
This commit is contained in:
		
							
								
								
									
										31
									
								
								keystoneclient/auth/token_endpoint.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								keystoneclient/auth/token_endpoint.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
				
			|||||||
 | 
					# Licensed 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from keystoneclient.auth import base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Token(base.BaseAuthPlugin):
 | 
				
			||||||
 | 
					    """A provider that will always use the given token and endpoint.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    This is really only useful for testing and in certain CLI cases where you
 | 
				
			||||||
 | 
					    have a known endpoint and admin token that you want to use.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def __init__(self, endpoint, token):
 | 
				
			||||||
 | 
					        # NOTE(jamielennox): endpoint is reserved for when plugins
 | 
				
			||||||
 | 
					        # can be used to provide that information
 | 
				
			||||||
 | 
					        self.endpoint = endpoint
 | 
				
			||||||
 | 
					        self.token = token
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_token(self, session):
 | 
				
			||||||
 | 
					        return self.token
 | 
				
			||||||
							
								
								
									
										35
									
								
								keystoneclient/tests/auth/test_token_endpoint.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								keystoneclient/tests/auth/test_token_endpoint.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,35 @@
 | 
				
			|||||||
 | 
					# Licensed 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.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import httpretty
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from keystoneclient.auth import token_endpoint
 | 
				
			||||||
 | 
					from keystoneclient import session
 | 
				
			||||||
 | 
					from keystoneclient.tests import utils
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TokenEndpointTest(utils.TestCase):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    TEST_TOKEN = 'aToken'
 | 
				
			||||||
 | 
					    TEST_URL = 'http://server/prefix'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @httpretty.activate
 | 
				
			||||||
 | 
					    def test_basic_case(self):
 | 
				
			||||||
 | 
					        httpretty.register_uri(httpretty.GET, self.TEST_URL, body='body')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        a = token_endpoint.Token(self.TEST_URL, self.TEST_TOKEN)
 | 
				
			||||||
 | 
					        s = session.Session(auth=a)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        data = s.get(self.TEST_URL, authenticated=True)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        self.assertEqual(data.text, 'body')
 | 
				
			||||||
 | 
					        self.assertRequestHeaderEqual('X-Auth-Token', self.TEST_TOKEN)
 | 
				
			||||||
		Reference in New Issue
	
	Block a user