1
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.

Entra IDからROPC フローでトークンを取得する

Last updated at Posted at 2024-04-10

はじめに

Entra IDで認証する時に対話型の認証と非対話型の2種類がありますが、ROPCフローは非対話型認証の方式です。どうしてもこの方式を採用しなければならなかったのですが、実際にやってみてハマったポイントもあるので備忘を兼ねてqiitaに残しておきます。

ROPCフロー図

image.png

リクエストを投げるとトークンが返ってくる方式です。簡単でいいですね。

ちなみにドキュメントの抜粋ですが、
image.png
とのことなので、セキュリティにリスクがあることは理解したうえで使用した方がよさそうです。

事前準備

①Entra IDを開きアプリ登録>新規作成を行います。
image.png

②任意の名前を入力し登録
image.png

③クライアントシークレットの作成
image.png
作成後の画面で必ずシークレット値を控える
image.png

③クライアントIDをメモした後APIのアクセス許可をクリック
image.png

④アクセス許可の追加>Microsoft Graph>委任されたアクセス許可>openidとprofileを選択
image.png

⑤[テナント名]に管理者の同意を与えますをクリック
image.png
状態に☑が付いたことを確認
image.png

リクエスト送信

アプリページからエンドポイント>OAuth2.0トークンエンドポイント(v2)をコピー
image.png

client_ID,grant_type,username,password,scope,client_secretをボディに記載し先ほどのエンドポイントにPOSTリクエストを送信
ボディ項目の詳細は以下参照

image.png
画像では見切れてますがアクセストークンに加えてIDトークンも同時に取得できています。

個人的ハマりポイント

以下謎にハマって苦戦したところです

①予め[テナント名]に管理者の同意を与えますをクリックしておく必要がある。
同意がないと以下エラーが発生します
image.png
ROPCのドキュメントに書いといてほしい

②条件付きアクセスを有効にしているユーザーはトークン取得ができない
ROPCフローの制約として条件付きアクセスが有効になっているユーザーの場合はトークンの取得ができません。こちらはドキュメントに記載がありました。
image.png

Entra IDがfreeテナントなので条件付きアクセスが設定できないので画像がないですが、条件付きアクセスが有効なユーザーでトークン取得を行うとAAD50076エラーレスポンスが返ってきます。

1
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
1
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?