<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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']