ASP.NETでPOSTデータを受け取り、応答するAPIを作っています。
Keyの認証はありません。
POSTされたときにアクセストークンの認証後に応答したいのですが、どのように実現するかが分かりませんでした。
認証に使うKeyはサンプルのPOSTデータにある「Key」と「Key2」です。
Key値は固定で、通信の度に変わるKey値ではありません。
一日以上調べてみましたが、なかなかうまくいきませんでした。
ご教授頂けますと幸いです。
言語:VisualBasic
開発環境:VisualStudio2019
フレームワーク:.NET Framework 4.7.2
POST送信方法:
VisualStudioCode
拡張機能 REST Client
'POST POST https://localhost:44385/api/ApiTest HTTP/1.1 content-type: application/json api-Key: testkey 'ここを追記しています api-key2: testkey2 'ここを追記しています { "name": "sample", "No": 10 }
VisualBasic
1Public Module WebApiConfig 2 Public Sub Register(ByVal config As HttpConfiguration) 3 ' Web API の設定およびサービス 4 5 'jsonをブラウザで表示させる 6 config.Formatters.JsonFormatter.SupportedMediaTypes.Add(New System.Net.Http.Headers.MediaTypeHeaderValue("text/html")) 7 ' Web API ルート 8 config.MapHttpAttributeRoutes() 9 10 11 config.Routes.MapHttpRoute( 12 name:="DefaultApi", 13 routeTemplate:="api/{controller}/{id}", 14 defaults:=New With {.id = RouteParameter.Optional} 15 ) 16 End Sub 17End Module
VisualBasic
1Namespace Controllers 2 Public Class ApiTestController 3 Inherits ApiController 4 5 ' POST: api/ApiTest 6 Public Function PostValue(<FromBody()> ByVal value As Test) As Test 7 Dim test As New Test 8 test.name = value.name 9 test.no = value.no 10 Return Test 11 End Function 12 End Class 13End Namespace
ASP.NET Core ではない .NET Framework ベースの Web API ということで良いのですか? Visual Studio でプロジェクトを作る時に使ったテンプレート、.NET Framework のバージョンを書いてください。
で、Key って何ですか? 認証用のベアラトークン?
>.NET Framework ベースの Web API ということで良いのですか?
はい、Coreではありません。
>.NET Framework のバージョンを書いてください。
.NET Framework 4.7.2を追記いたしました。
>認証用のベアラトークン?
勉強不足でベアラトークンを理解できておりませんが、TwitterなどのAPIを参考にする限りアクセストークンになると思います。
上記は意味不明ですが、ひょっとしてこういうことですか?→
https://docs.microsoft.com/ja-jp/aspnet/web-api/overview/security/individual-accounts-in-web-api
上に紹介した記事のようなベアラトークンを使ってユーザー認証するという話ではなくて、質問に書いてあるとおり、
api-Key: testkey
api-key2: testkey2
というキーとバリューを要求ヘッダに含めて送信すればよくて、後は質問者さんがサーバー側でのそれらのヘッダ情報の取得と独自認証を自分で実装できるので、送り方だけを聞いている?
そうだとして、クライアント側では何を使うのですか? ブラウザから JavaScript で ajax を使って 送信? WinForms などのアプリで HttpClient を使って送信?
質問者さん、その後無言ですが、コメント欄の質問に対して回答願います。ギブアップしたとかでこのスレッドの Q&A は不用になったということならそれはそれで構いませんので、その旨書いてクローズしてください。無言で放置は NG です。
あなたの回答
tips
プレビュー