質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.83%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

受付中

VB.NET VSでActive Directory Interactive認証を使いたい

MaoT
MaoT

総合スコア5

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0回答

0グッド

0クリップ

1711閲覧

投稿2021/08/30 10:20

Visual Studio2019
Windows10
VB.NET
.NetFramework4.8
System.Data.SqlClient 3.0.0

Visual StudioでWindowsフォームアプリケーションを作成しています。
SQL Serverへの接続文字にAD対話型認証の「Active Directory Interactive」を使いたいのですが、「認証プロバイダーが見つかりません」というエラーになってしまいます。

VB.NET

1 Dim constr As String = "Server=xxxxxx.database.windows.net; Authentication=Active Directory Interactive;Database=xxxx" 2 Using connection As SqlConnection = New SqlConnection(constr) 3 Try 4 connection.Open() 5 Dim command As SqlCommand = connection.CreateCommand 6 7 command.CommandText = "delete from testtable" 8 command.ExecuteNonQuery() 9 10 connection.Close() 11 Catch ex As Exception 12 WriteLine(ex.ToString) 13 End Try 14 End Using

何か設定が足りないのでしょうか。

また上記が接続できなかった為Azureサービスプリンシパルを作成し、ログインウィンドウを出しアクセストークンを取得して接続文字に足してみましたが、Error Number: 18456が出てしまいます。

VB.NET

1 Dim constr As String = "Server=xxxxxx.database.windows.net; Interactive;Database=xxxx" 2 Using connection As SqlConnection = New SqlConnection(constr) 3 Try 4 5 connection.AccessToken = ar.AccessToken '取得したアクセストークン 6 connection.Open() '接続がOPENできずにError18456 7 Dim command As SqlCommand = connection.CreateCommand 8 9 command.CommandText = "delete from testtable" 10 command.ExecuteNonQuery() 11 12 connection.Close() 13 Catch ex As Exception 14 WriteLine(ex.ToString) 15 End Try 16 End Using

何とか対話型認証ができる方法はありますでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

SurferOnWww

2021/09/05 22:07 編集

クライアント(WebForms アプリ)から直接 DB サーバーに接続することを考えておられるようですが、セキュリティの問題があることは認識されてますか? 答えが Yes でそこは対応済みなら以下はスルーしてください。No なら以下のようにするなどシステム構成を見直すことも検討されてはいかがですか。 クライアント ⇔ Web API ⇔ DB Server そのようにすれば、クライアントの認証はクッキーやベアラトークンなどを用いて Web API で行い、Web API ⇔ DB Server 間は普通に固定的に Windows 認証とか SQL Server 認証で可能と思います。 余計なお世話でしたら失礼しました。
MaoT

2021/09/13 23:16

SurferOnWww様 遅くなって申し訳ありません、ご返答ありがとうございます。 WebForms アプリではなくWindowsFormアプリなので、WindowsFormアプリ上で出来るか確認してみます。 ありがとうございました。
SurferOnWww

2021/09/13 23:34 編集

すみません、間違いがありました。 ×: クライアント(WebForms アプリ)から直接 DB サーバーに接続することを考えておられるようですが、セキュリティの問題があることは認識されてますか? ○: クライアント(Windows Forms アプリ)から直接 DB サーバーに接続することを考えておられるようですが、セキュリティの問題があることは認識されてますか? セキュリティの問題があるのは Windows Forms アプリ以外にも WPF, コンソールアプリなどユーザーの PC から直接 DB に接続するアプリは同じです。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.83%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Active Directory

Active Directoryは、 Windows Serverの機能の一つで、 マイクロソフトによって作られたディレクトリサービスです。 ネットワーク上に存在する様々なハードや利用者情報のアクセス権限などを一元管理が出来ます。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。