私は認証に使用しているAzure Mobileサービスを持っています。 Timespan
はそうトークンの有効期限が切れていないnull
に設定されている401 Azureモバイルサービスにリクエストすると権限がない
JwtSecurityToken token = AppServiceLoginHandler.CreateToken(claims, signingKey, audience, issuer, null);
return Ok(new LoginResult()
{
AuthenticationToken = token.RawData,
User = signinedInUser,
StatusCode = System.Net.HttpStatusCode.OK
});
注意:私は、一度検証し、以下の情報を返すカスタム認証プロバイダーを持っています。
その後、Authorize()
属性で保護されたコントローラを持つ私のAMSに次の要求を行います。しかし、私のブレークポイントがヒットする前に、これらはすべて401 Unauthorized
の応答で失敗しています。
:
2017-10-05T12:18:54 PID [5524]情報要求、METHOD = POST、 のURL = https://mywebsite.azurewebsites.net/api/userinfo/update、 メッセージ= 'https://mywebsite.azurewebsites.net/api/userinfo/update'
2017-10-05T12:18:54 PID [5524]情報メッセージ= 'のUserInfo' オペレーション= DefaultHttpControllerSelector.SelectController
2017-10-05T12:18:54 PID [5524]情報 メッセージ= 'MyAMS.Controllers.UserInfoController' オペレーション= DefaultHttpControllerActivator.Create
2017-10-05T12:18:54 PID [5524]情報 メッセージ= 'MyAMS.Controllers.UserInfoController' オペレーション= HttpControllerDescriptor .CreateController
2017-10-05T12:18:54 PID [5524]情報メッセージ= '選択されたアクション '更新(ユーザcpUser)''、 オペレーション= ApiControllerActionSelector.SelectAction
2017-10-05T12 :18:54 PID [5524]情報メッセージ= '同じものを使用する 'JsonMediaTypeFormatter' フォーマッタ ' オペレーション= JsonMediaTypeFormatter.GetPerRequestFormatterInstance
2017-10-05T12:18:54 PID [5524]情報メッセージは= '選択さ フォーマッタ=' JsonMediaTypeFormatter'、コンテンツ・タイプ= "アプリケーション/ JSON ; のcharset = UTF-8 ''、オペレーション= DefaultContentNegotiator.Negotiate
2017-10-05T12:18:54 PID [5524]情報 オペレーション= AuthorizeAttribute.OnAuthorizationAsync、ステータス= 401 (不正)
2017-10-05T12:18:54 PID [5524]情報 操作= UserInfoController。ExecuteAsync、ステータス= 401(不正)
2017-10-05T12:18:54 PID [5524]情報応答、ステータス= 401 (不正)、メソッド= POST、 のURL = https://mywebsite.azurewebsites.net/api/userinfo/update、 メッセージ= 'コンテンツ-type = 'application/json;文字セット= UTF-8' 、 コンテンツ長=不明」
あなたは承認属性が401応答を設定していることがわかります。
2017-10-05T12:18:54 PID [クライアントで5524]インフォメーション オペレーション= AuthorizeAttribute.OnAuthorizationAsync、ステータス= 401 (無許可)
、私は、ユーザーIDと認証トークンの両方を取り込む:
this.client = new MobileServiceClient("https://mywebsite.azurewebsites.net");
var user = UserProfileService.GetCurrentSignedInUser();
client.CurrentUser = new MobileServiceUser(user.UserId.ToString())
{
MobileServiceAuthenticationToken = user.AuthToken
};
コードをステップ実行すると、UserIDがユーザーのものと一致し、AuthTokenがログインメソッドで返された同じAutTokenであることが確認されました。
Azure Mobileサービスへの認証されたリクエストを有効にするために設定/実行する必要があるものはありますか?
EDIT
おかげで、私は無効になりますので、Azureの内の他のすべての認証プロバイダを持っているが、これは問題を解決していません。 また、ローカルでコードをデバッグしましたが、Azureにデプロイされたときにのみ、ローカルホスト上で実行されている問題は発生しません。
唯一のことは、自分のアプリがFBログインを提供しているので、Facebook認証プロバイダを有効にしていることです。しかし、私は自分のカスタム認証を使用してログインすることができます。それは失敗したサービスへの直後の要求です。私はフィドラーを使って試してみましたが、同じ{"message": "このリクエストでは承認が拒否されました。 – LDJ
カスタム認証apicontrollerは匿名でアクセスできますが、この問題のコントローラには 'Authorize'属性があります。 FBプロバイダを一時的に削除して、この問題を絞り込めます。また、ローカル側でサーバーサイドプロジェクトを実行してから、カスタム認証がローカル側で機能するかどうかを確認してください。 –
こんにちはBruce、私はFBプロバイダを削除し、同じ結果、401 Unauthorized errorを取得しました。無許可の理由をよりよく理解する方法はありますか? – LDJ