~ubuntu-branches/ubuntu/quantal/nova/quantal-proposed

« back to all changes in this revision

Viewing changes to nova/api/openstack/auth.py

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2010-12-13 10:17:01 UTC
  • mto: This revision was merged to the branch mainline in revision 8.
  • Revision ID: james.westby@ubuntu.com-20101213101701-txhhqbzsxw4avnxv
Tags: upstream-2011.1~bzr456
ImportĀ upstreamĀ versionĀ 2011.1~bzr456

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
class BasicApiAuthManager(object):
24
24
    """ Implements a somewhat rudimentary version of OpenStack Auth"""
25
25
 
26
 
    def __init__(self, host=None, db_driver=None):
27
 
        if not host:
28
 
            host = FLAGS.host
29
 
        self.host = host
 
26
    def __init__(self, db_driver=None):
30
27
        if not db_driver:
31
28
            db_driver = FLAGS.db_driver
32
29
        self.db = utils.import_object(db_driver)
47
44
        except KeyError:
48
45
            return faults.Fault(webob.exc.HTTPUnauthorized())
49
46
 
50
 
        token, user = self._authorize_user(username, key)
 
47
        token, user = self._authorize_user(username, key, req)
51
48
        if user and token:
52
49
            res = webob.Response()
53
50
            res.headers['X-Auth-Token'] = token.token_hash
77
74
            if delta.days >= 2:
78
75
                self.db.auth_destroy_token(self.context, token)
79
76
            else:
80
 
                #TODO(gundlach): Why not just return dict(id=token.user_id)?
81
 
                user = self.auth.get_user(token.user_id)
82
 
                return {'id': user.id}
 
77
                return self.auth.get_user(token.user_id)
83
78
        return None
84
79
 
85
 
    def _authorize_user(self, username, key):
86
 
        """ Generates a new token and assigns it to a user """
 
80
    def _authorize_user(self, username, key, req):
 
81
        """Generates a new token and assigns it to a user.
 
82
 
 
83
        username - string
 
84
        key - string API key
 
85
        req - webob.Request object
 
86
        """
87
87
        user = self.auth.get_user_from_access_key(key)
88
88
        if user and user.name == username:
89
89
            token_hash = hashlib.sha1('%s%s%f' % (username, key,
91
91
            token_dict = {}
92
92
            token_dict['token_hash'] = token_hash
93
93
            token_dict['cdn_management_url'] = ''
94
 
            token_dict['server_management_url'] = self._get_server_mgmt_url()
 
94
            # Same as auth url, e.g. http://foo.org:8774/baz/v1.0
 
95
            token_dict['server_management_url'] = req.url
95
96
            token_dict['storage_url'] = ''
96
97
            token_dict['user_id'] = user.id
97
98
            token = self.db.auth_create_token(self.context, token_dict)
98
99
            return token, user
99
100
        return None, None
100
 
 
101
 
    def _get_server_mgmt_url(self):
102
 
        return 'https://%s/v1.0/' % self.host