C#でOAuth 2.0認証トークンを取得する方法
2023-09-11 04:27:06
質問
私は以下のような設定をしています。
- 認証用URL(これは偶然にも " https://login.microsoftonline.com/ ...")であることを確認してください。
- アクセストークンのURL " https://service.endpoint.com/api/oauth2/token "。
- ClientId "abc"。
- クライアントシークレット "123"
次に、ヘッダーのベアラートークンを使用して、getコールを行う必要があります。
Postmanでこれを動作させることができますが、C#でこれを実装する方法を見つけ出そうとすると壁にぶつかります。私は RestSharp を使用してきました (ただし、他のものにもオープンです)。それはコンソールアプリなので、ベルやホイッスルは必要ありません。
最終的に、私は自分のアプリが (プログラム的に) トークンを取得し、その後の呼び出しにそれを使用したいのです。私が求めているものを明確に説明するドキュメントまたは例を示してくれる人に感謝します。私が遭遇したすべては、部分的であるか、または異なるフローで動作するサービス用です。
ありがとうございます。
どのように解決するのですか?
Postmanで コードを生成する をクリックし、次に コードスニペットの生成 のダイアログで、C# (RestSharp)を含む別のコーディング言語を選択することができます。
また、アクセストークンのURLだけが必要なはずです。フォームのパラメータはその後です。
grant_type=client_credentials
client_id=abc
client_secret=123
コードスニペットです。
/* using RestSharp; // https://www.nuget.org/packages/RestSharp/ */
var client = new RestClient("https://service.endpoint.com/api/oauth2/token");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("application/x-www-form-urlencoded", "grant_type=client_credentials&client_id=abc&client_secret=123", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
レスポンスボディからアクセストークンを取得することができます。例えば ベアラ というトークンタイプの場合、その後の認証済みリクエストに以下のヘッダを追加することができます。
request.AddHeader("authorization", "Bearer <access_token>");
関連
-
[解決済み】トランスポート接続からデータを読み取れない:既存の接続は、リモートホストによって強制的に閉じられました。
-
[解決済み】プロジェクトビルド時のエラー。エディタでスクリプトにコンパイルエラーがあるため、Playerのビルドにエラーが発生する
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] C#で文字列のエンコーディングを手動で指定せずに、一貫性のあるバイト表現を得るには?
-
[解決済み] 乱数(int)を生成する方法を教えてください。
-
[解決済み] C#でenumからint値を取得する
-
[解決済み】OAuth 2は、Security Tokenを使用したリプレイ攻撃などからどのように保護するのでしょうか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】GDI+、JPEG画像をMemoryStreamに変換する際にジェネリックエラーが発生しました。
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み] [Entity Framework 4.1でエンティティに関連オブジェクトを追加する際に、エンティティオブジェクトをIEntityChangeTracker.の複数のインスタンスから参照できない。
-
[解決済み] エンティティタイプ <type> は、現在のコンテキストのモデルの一部ではありません。
-
[解決済み】2つ(またはそれ以上)のリストを1つに統合する(C# .NETで
-
[解決済み】2年前のMSDateを把握する【クローズド
-
[解決済み] ...基礎となる接続は閉じられました。予期しないエラーが受信で発生しました
-
[解決済み】エラー「必要なフォーマルパラメータに対応する引数が与えられていない」を解決する?
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない