Excel VSTO WorkBook から Azure AD で保護された WebApi を呼び出そうとしています。これは、SPA アプリケーションに使用するのと同じ webApi ですが、この同じ Api を Excel から直接使用する必要もあります。
私はかなり長い間検索してきましたが、これがどのように機能するかについてのガイダンスが見つかりません。
これが可能かどうか、また可能であればどのように達成すべきか知っていますか?
Excel VSTO WorkBook から Azure AD で保護された WebApi を呼び出そうとしています。これは、SPA アプリケーションに使用するのと同じ webApi ですが、この同じ Api を Excel から直接使用する必要もあります。
私はかなり長い間検索してきましたが、これがどのように機能するかについてのガイダンスが見つかりません。
これが可能かどうか、また可能であればどのように達成すべきか知っていますか?
私は昨日これに遭遇し、それを機能させました。このスレッドに感謝します。
このシナリオは一時的にサポートされていなかったようですが、現在は間違いなく機能しています。実行する必要があるのは次のとおりです。
Excel からアクセスされているサービスは、認証が必要であることをクライアント (Excel) に知らせるために、ある時点で HTTP 401 応答を返す必要があります (これは既に行われているはずです)。次に Excel は、ヘッダーを使用して別の要求をサービスに送信しますAuthorization: Bearer
。の後には何も来ないことに注意することが重要ですBearer
。認証フローが完了すると、Excel は同様のヘッダーを持つ要求の送信を開始しますが、単語の後にさらに情報がありBearer
、それらの要求は要求パイプラインを介して続行できるようにする必要があります。 .
認証フローが正しく機能するためには、前述の要求に対するサービス応答に次のヘッダー値が含まれている必要があります。
WWW-Authenticate: Bearer authorization_uri="Your auth URI here"
引用符は応答に含める必要があります。Azure AD を使用しているため、URI は次のようになります。
https://login.microsoftonline.com/{tenantId}/oauth2/authorize
{tenantId}
テナント ID に置き換えます。
これが機能するために私が見つけた 1 つの注意点は、サービスのドメインへの URL (例: http://my.domain.com
) がアプリ登録のアプリ Uri ID と一致する必要があることです。過去にこれは良い習慣ではないと読んだことがあると思うので、これを回避する方法があることを願っています(ソースはもう見つかりませんが)。これを処理する別の方法がある場合は、戻って回答を更新します。