2017-04-09 6 views
0

私たちのコマンドラインアプリケーション(Djangoアプリケーション)にはOpenIDを有効にする必要があります:ユーザーがAPIにアクセスしようとするたびに、ユーザーがOpenIDを使用して認証されていることを確認する必要がありますGoogle)。私はOpenIDウェブサイトにアクセスするためのシェルスクリプトを書こうとしていて、ユーザーのマシンにクッキーを保存しています。そして、彼が2番目のアプリケーションにアクセスしようとするたびに、私は自分のマシンに保存しているクッキーに基づいてアクセス権を与えられます。CURLをウェブサイトに認証する

hereというアプローチを使用しようとしていて、2番目のURLにアクセスしようとすると、「あなたのブラウザは現在Cookieをブロックするように設定されています。

私のウェブサイトは単一のドメインにはなく、OpenIDを使って認証します。

  1. 私は、最初のWebサイトにログインし、サイトがOpenIDの ウェブサイト(アズールAD)
  2. に私をリダイレクト私は正常にユーザー名とパスワード でカール使用してリダイレクトされたURLにアクセスし、クッキーを保存。
  3. の行を使用して2番目のWebサイトにログインしようとすると、このエラーが表示されます。 (私はそれらを読むと第二のウェブサイトのページを開くことができる必要があり、クッキーを保存しているので)

curl --cookie ./somefile https://secondwebsite.com/b

ここでは、要約すると、私の完全なスクリプト

#Setting redirect url in IP variable 
set IP=`curl -w "%{url_effective}\n" -I -L -s -S http://mysite1.com -o /dev/null` 
echo "Trying to Authenticate.." 
curl -L -s -S -I -k -v -i --user "[email protected]" -D ./temp/cookie $IP 
echo "Authentication successful" 
#I need to check if the cookie is set or not, If it is set Authentication is successful 

echo "Trying to access the second url" 
#The below line is failing, When I wrote the whole content to html file, I see the error mentioned above (Your browser is currently set to block cookies. You need to allow cookies to use this service) 
curl --cookie ./temp/cookie https://secondwebsite.com/ 

で、私は2つの質問でつまずく

  1. neを使わないで第2のサイトにユーザーを認証する 再度
  2. 時々、認証URLはユーザからのパスワードを要求します。 モバイル(2因子認証)に送信されます。それが発生した場合、このケースを処理する上でどのような指針がありますか?

答えて

0

コマンドラインアプリケーションでAPIにアクセスするための適切な安全な方法があります。

[OpenId Connect RFC](http://openid.net/specs/openid-connect-core-1_0.html)では、公開クライアント[コードフロー](http://openid.net/specs/openid-connect-core-1_0.html#CodeFlowAuth)を使用してaccess_tokenとrefresh_tokenを取得できます。ユーザーはこれを初めて行うことができ、後でコマンドラインアプリケーションを使用すると、use the Refresh Tokensは新しいアクセストークンを更新してAPIを呼び出すことができます。

Azure AD B2Cには、[デスクトップアプリケーションからのコードフロー](https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-devquickstarts-native-dotnet)とそれに対応するGitHubを呼び出す方法の例がいくつかあります。

このリンクはあなたのコマンドラインアプリケーションは、パスワードやMFAの詳細などの機密情報を収集されることはありません。この方法を詳細https://docs.microsoft.com/en-us/azure/active-directory-b2c/active-directory-b2c-reference-oauth-code#4-refresh-the-token

を持っています。それはブラウザを呼び出して、AAD B2Cが設定された最も安全な認証を行い、アプリケーションにaccess_tokenを与えるようにします。それ以降、コマンドラインは、通常、Authorizationヘッダーに入れることによって、アクセストークンをベアラトークンとして使用します。

+0

仕様通り、ブラウザの操作が必要でしたが、完全なコマンドラインベースの認証を求めています。クライアントはリソース所有者のユーザーエージェント(通常はWebブラウザ)と対話できなければなりません(https://tools.ietf.org/html/rfc6749#section-4.1) –

関連する問題