我正在使用rest来使用API密钥对Bluemix的用户进行身份验证。我还想实现用户名和密码身份验证。
def auth(self):
self.log.debug('Authenticating to CloudFoundry')
url = self.info['authorization_endpoint'] + '/oauth/token'
headers = {
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
'Accept': 'application/x-www-form-urlencoded;charset=utf-8',
'Authorization': 'Basic Y2Y6'
}
if self.api_auth:
data = 'grant_type=password&username=apikey&password={}'.format(self.api_key)
elif self.userpass_auth:
data = 'grant_type=password&username={}&password={}'.format(self.username, self.password)
else:
raise ValueError()
# send request ...
但是,当我尝试使用用户名和密码发出请求时,我会收到回复:
{"error_description":"BMXLS0202E: You are using a federated user ID,
please use one time code to login with option --sso.","error":"unauthorized"}
所以我可以将我的用户发送到SSO网页以获取令牌,但是当他们拥有SSO令牌时我需要做什么REST API?或者,我是否使用与上面相同的rest api,而是提供不同的参数?
答案 0 :(得分:1)
为什么要支持用户名和密码(我觉得我在这里错过了一个难题)?
我建议使用API令牌作为一般的良好做法 - 某些联合登录需要基于网络的令牌步骤,这在使用集成时并不是很好。