如何使用SSO和REST在Bluemix上进行身份验证?

时间:2017-11-30 08:09:52

标签: ibm-cloud single-sign-on

我正在使用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,而是提供不同的参数?

1 个答案:

答案 0 :(得分:1)

为什么要支持用户名和密码(我觉得我在这里错过了一个难题)?

我建议使用API​​令牌作为一般的良好做法 - 某些联合登录需要基于网络的令牌步骤,这在使用集成时并不是很好。