0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

完走賞のQiitanぬいぐるみをお迎えするためにUnityでゲーム作ってみるAdvent Calendar 2023

Day 9

【Azure認証】シークレット値を使ったトークン取得

Last updated at Posted at 2023-12-08

はじめに

業務でシークレット値を使ったトークン取得を実装したため、忘れないようにメモです。

やりたいこと

Document Intelligenceの結果を返してくれるWebAPIを作ったので、これを他のアプリから呼び出して使いたい…
でもDocument IntelligenceにはAuthorization属性がついている…
(どちらも.NET6でつくったC#Webアプリ)
image.png

アプリケーション登録

認証をかけたWebAPIをアプリ登録します。(上の図だとDocument Intelligence)
今回Azure AD B2Cの環境で作りましたが、もちろんAzure ADでも大丈夫です。
image.png

シークレットの作成

認証で必要になるため、「新しいクライアントシークレット」を作成します。
image.png

APIの公開

APIの公開からアプリケーションIDのURIを追加します。
image.png

アプリケーションにする設定は以上です。

コード

認証をかけたWebAPI(Document Intelligence WebAPI)を使いたいアプリ側に以下のコードを追加します。

ドメイン・テナントID・クライアントID・生成したシークレット値は👆で登録したアプリの値です。

appsettings.json
  "DocumentIntelligence": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "ドメイン",
    "TenantId": "テナントID",
    "ClientId": "クライアントID",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath ": "/signout-callback-oidc",
    "ClientSecret": "生成したシークレット値"
  }
private async Task<string> GetTokenAsync()
{
    try
    {
        ConfidentialClientApplicationOptions applicationOptions;
        applicationOptions = new ConfidentialClientApplicationOptions();
        _configuration.Bind("DocumentIntelligence", applicationOptions);

        IConfidentialClientApplication app;
        app = ConfidentialClientApplicationBuilder.CreateWithApplicationOptions(applicationOptions).Build();
        var acquireToken = app.AcquireTokenForClient(new List<string> { "https://{domain}/{clientId}/.default" });
        var authenticationResult = await acquireToken.ExecuteAsync();
        return authenticationResult.AccessToken;
    }
    catch (Exception)
    {
        throw;
    }
}

実行すると、これでトークンが取得できました。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?