def authenticate(self, username, password):
        """
        Obtain an oauth token. Pass username and password. Get a token back. If KitsuAuth is set to remember your tokens
        for this session, it will store the token under the username given.

        :param username: username
        :param password: password
        :param alias: A list of alternative names for a person if using the KitsuAuth token storage
        :return: A tuple of (token, expiration time in unix time stamp, refresh_token) or ServerError
        """
        r = requests.post(self.apiurl + "/token",
                          params={"grant_type": "password", "username": username, "password": password,
                                  "client_id": self.cid, "client_secret": self.csecret})

        if r.status_code != 200:
            raise ServerError

        jsd = r.json()

        if self.remember:
            self.token_storage[username] = {'token': jsd['access_token'], 'refresh': jsd['refresh_token'],
                                            'expiration': int(jsd['created_at']) + int(jsd['expires_in'])}

        return jsd['access_token'], int(jsd['expires_in']) + int(jsd['created_at']), jsd['refresh_token']