2
OAuth/Owinを使用して認証を処理するWeb APIプロジェクトがあります。Owin OAuthコンテキスト:Frontend login send Json
私はform-urlencodedを介して投稿するとすべてうまくいきます。しかしフロントエンドのチームはアプリケーション/ jsonを投稿し、私はこのJsonを受け取る方法を変更することができませんでした。
私は通常、[FromBody]を使用してJsonを受信しますが、今回は動作しませんでした。
マイコード:
public override async Task ValidateClientAuthentication([FromBody]OAuthValidateClientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials([FromBody]OAuthGrantResourceOwnerCredentialsContext context)
{
try
{
....
}
catch (Exception e)
{
context.SetError("invalid_grant", "User not found");
}
}
}
マイOAuthの設定:
public static void ConfigureOAuth(IAppBuilder app, IContainer container)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true, // HTTPS == false
TokenEndpointPath = new PathString("/security/login"),
AccessTokenExpireTimeSpan = TimeSpan.FromHours(2),
Provider = container.Resolve<IOAuthAuthorizationServerProvider>()
};
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
JSON例:
{grant_type: "パスワード"、ユーザ名: " myuser "、パスワード:ここから
context.Request.Body.Position = 0; // this resets the read position to 0 var payload = await new StreamReader(context.Request.Body).ReadToEndAsync();
による "MYPASS"}リクエストボディで
jsonフォームリクエストを読むことができます。 動的obj = Request.Content.ReadAsAsyncを待ちます(); –
Eins