2017-11-30 10 views
0

私は、APIキーを使用してBluemixにユーザーを認証するためにrestを使用しています。また、ユーザー名とパスワードの認証を実装したいと思います。SSOとRESTを使用して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のWebページに私のユーザーを送ることができますが、彼らがSSOトークンを持っているときに必要なREST APIは何ですか?または、私は上記と同じ残りのAPIを使用しますか?代わりに別のパラメータを指定しますか?

答えて

1

なぜあなたはユーザー名とパスワードをサポートしたいのですか(私はここでパズルを欠いているような気がします)?

一般的な良い方法としてAPIトークンを使用することをお勧めします。統合ログインを使用するには、統合を使用する際にはあまりうまくいかないウェブベースのトークンステップが必要です。

+0

私はあなたに同意します。私はAPIトークンが好きで、[私のライブラリ](https://github.com/snowch/ibm-analytics-engine-python)でAPIトークンのサポートを始めました。しかし、一部のユーザーからは、私もユーザー名/パスワードをサポートするように要求されています:( –

+0

これはサポートできますが、フェデレーションIDを持つユーザーはAPIトークンルートを選択する必要があります。 / –

関連する問題