私はフロントエンドとWeb APIの部分を持つasp.netアプリケーションを持っています。私は、モバイルアプリが保護されたWeb APIエンドポイントを使用できるようにしたいと思います。つまり、ネイティブモバイルアプリケーションにログインして認証トークンを処理する必要があります。asp.netからhttp応答としてベアラトークンを取得するには
今、私は私のasp.netアプリケーションにログインすることができる唯一の方法は、デフォルトのasp.net /アカウント/ログインページを経由することです。ログインエンドポイントに投稿すると、返される本文には自分のアプリケーションのHTMLが含まれます。トークンはasp.netによってクッキーに保存されます。
私は私のネイティブモバイルアプリからログインしようとしていますので、私は、HTMLレスポンスを必要としない、と私のトークンを取得するためにクッキーを通過する必要がしたくありません。
はそれだけではなく、自分のアプリケーションのHTMLコンテンツよりも、トークンおよび/またはユーザー詳細を返す別のログインエンドポイントを作成することは可能ですか?これは悪い考えですか?参考までに、これは私が参照していたデフォルトのasp.netログインハンドラです。
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}
* web APIの部分*を追加できますか? –
@Div私のWeb APIコードのどれもが認証を処理しません。 '[Authorize]'属性を通してベアラトークンを検証するだけです –