2016-06-15 21 views
0

トークン要求の書式設定に関するヘルプが必要です。私は周りを探索し、多くのドキュメントを見ました。フィドラーの応答は "grant_type"について叫んでいますが、それは含まれています。また、私は(私はそれを文字列化しようとしている) '(grant_type =パスワード、例えば)なしでそれらを送信するだけでなく、オブジェクトを作成しようとしたoauth 2.0からMicrosoft認証サーバー

POST http://localhost:4400/ripple/xhr_proxy?tinyhippos_apikey=ABC&tinyhippos_rurl=https%3A//login.microsoftonline.com/[removed]/oauth2/token HTTP/1.1 
Host: localhost:4400 
Connection: keep-alive 
Content-Length: 104 
Authorization: Basic YWZyaWVkOnRlc3Q= 
Origin: http://localhost:4400 
Content-Type: text/plain;charset=UTF-8 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36 
X-Ripple-User-Agent: Mozilla/5.0 (Linux; U; Android 2.3.2; en-us; Nexus S Build/GRH78C) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 
Accept: */* 
Referer: http://localhost:4400/login.html 
Accept-Encoding: gzip, deflate 
Accept-Language: en-US,en;q=0.8 

grant_type='password'&username='afried'&password='test'&client_id='[removed]' 

:どのシオマネキに投稿

var data = { 'grant_type': 'password', 
    'username': userID, 
    'password': password, 
    'client_id': clientId 
}; 

[object Object] 

としてAuthorizationヘッダーはユーザー名です:パスワード、私は、パスワードの助成金で、あなたが最初の認証のエンドポイントを押すことなく、トークンエンドポイントから直接要求できるという印象の下で午前ユーザー名/パスワードを送信しているからです。

私は.withCredentials = trueを持っています。コンテンツセキュリティポリシーもOKです。

ご協力いただければ幸いです。私はそれが何かシンプルであることを知っている、私はそれを見ることができない、と私は経験を持っていないと思う、私に飛び降りて何もない。

+0

コンテンツタイプのヘッダーを設定する必要があるようです。私はgrant_typeの問題を過ぎていますが、今は "リソース"を望んでいます...それにはまだ取り組んでいますが、答えは単に "Content-Typeヘッダを追加することです[私はapplication/x-www-form-urlencodedとそれは働いているようだ " – Aaron

答えて

0

他の誰かがここに巻き込まれます。これは具体的な回答ですが、ユーザ名/パスワードの付与(grant_type = password)に似た問題がある場合は、これが私にとってはうまくいきます。

1 -/oauth2/tokenから直接トークンを取得できます。最初に承認する必要はありません。あなたはユーザー名/パスワードを送信しているので、プリエンプティブなステップは必要ありません。

2 - リクエストヘッダ - 認証 - 基本+のbase64encodeユーザ名:パスワード - のContent-Type - アプリケーション/ x-www-form-urlencodedで - でも、モバイルアプリケーションのために、JSONは、不正な要求を動作しません。

3-withCredentials = true(テストしませんでしたが、私は間違っている場合は常にこれがモバイル用の必須項目であると確信しています)。

4 - 私はPOSTデータのために使用される正確な形式:

var data = 
    "resource=http://[serviceName].azurewebsites.net" + 
    "&grant_type=password" + 
    "&username=" + userID + "@[xxx].onmicrosoft.com" + //so they don't have to type it. This is sufficient for my company and app. 
    "&password=" + password + 
    "&client_id=" + clientId + 
    "&response_type=token"; 
var dataFinal = encodeURI(data); //in case. Didn't test without. 

request.send(dataFinal); 

実際に私はそれらを送っために重要でように見えた私は最後のリソースを送ったとき、私はメッセージが「[名前のアプリケーションを見つけることができません取得保管。 servicename] .azurewebsites.n "(それは最後の2文字をトリミングしていました)。それは非常にバグが多いようです。それはちょうどmicrosoftが応答を送信する方法に問題があったかもしれませんが、それは間違っているので、私はそれを言及しています。

関連する問題