def build_request(self, headers, target_app=None, token_type=TokenType.USER, exclude_authorizations=None): """ Build a TokenRequest for the given information. @param target_app: the optional targetSecurityId @return: A TokenRequest for the request """ token = TokenRequest(securityId=self.appConfig.getSecurityID(), targetSecurityId=target_app, timestamp=util.current_time_millis(), type=token_type, excludeAuthorizations=exclude_authorizations) token.targetSecurityId = target_app if token_type == TokenType.USER: token.proxyPrincipal = self.principal_from_request(headers) # generate signature if not self.mock: signature = self._sign(util.serialize_token_request(token)) else: signature = "" return token, signature