ASP.NET Web APIで認証機能付きのAPIを作成する。


ASP.NET Web APIで認証機能付きのAPIを作成

ここに詳細に書かれていました。
Secure a Web API with Individual Accounts and Local Login in ASP.NET Web API 2.2

上記の記事を見れば完璧です。自分が動作確認で行ったことを補足的に記載します。

動作確認

記事に書かれていた内容をもとに動作確認してみました。

1.上記サイトからソースをダウンロードし、ローカルでビルドする。

詳細は省きます。

2.アプリケーションを立ち上げ、適当なメールアドレスでユーザーを作成する。

3.ログイン処理(access_tokenを発行してもらう。)

サンプル画面にてログインして、APIをCallしても良いが、分かりやすい様にcurlでCallしてみた。

$ curl -k https://localhost:44305/token -X POST --data 'grant_type=password&[email protected]&password=Password1!'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   731  100   667  100    64   2245    215 --:--:-- --:--:-- --:--:--  2245
{
  "access_token":"-R6uUYvuby5ztGaIiYkIy5S3mQCtqYukU...", # 発行されたaccess_token
  "token_type":"bearer",
  "expires_in":1209599,
  "userName":"[email protected]",
  ".issued":"Thu, 01 Dec 2016 00:51:33 GMT",
  ".expires":"Thu, 15 Dec 2016 00:51:33 GMT"
}

4. ヘッダーに発行されたaccess_tokenをセットして、APIをCallする。

$ curl -k  https://localhost:44305/api/values -X GET -H 'Authorization: Bearer -R6uUYvuby5ztGaIiYkIy5S3mQCtqYukU...'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    25  100    25    0     0    123      0 --:--:-- --:--:-- --:--:--   123
"Hello, [email protected]." # APIから返却された値。

上記の様になる。

なお、access_tokenの値が誤っていた場合は、以下の通り処理が行われない。

$ curl -k  https://localhost:44305/api/values -X GET -H 'Authorization: Bearer -R6uUYvuby5ztrerewGaIiYkIy5S3mQCtqYukU...'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    61  100    61    0     0    279      0 --:--:-- --:--:-- --:--:--   300
{"Message":"Authorization has been denied for this request."}

これでOKだと思う。