2017-09-05 10 views
1

Azure Active DirectoryのIDに基づくソリューションを開発したいと考えています。AzureのAD IDがWebサイトからAzureデータベースにパス

  • ユーザーがWebサイトに入ると、淡いアクティブディレクトリのログインとパスワードでサインインするように要求されます。
  • ウェブサイトは、いくつかの情報を押し、ユーザが「送信」ヒットとデータがデータベース操作が実行されるバックエンドでのWeb APIに行くのフォームを充填した後
  • を「送る」でフォームを埋めるためにそれらを可能に
  • ユーザーIDはこれらすべてのレイヤーを通過し、Azure SQLデータベースに到達します
  • 読み取り権限(dbレベルで定義されています)がある場合、データ操作が実行されます。
  • ユーザーは、Webサイトにアクセスした後で一度だけログインします。ウェブサイトは途中で自分のアイデンティティを覚えて、それをバックエンドのWeb APIとSQLデータベースに渡します。

簡単に言えば:AAD(ウェブサイトレベル)で一度だけログインしたいのですが、db操作を実行するとデータベースユーザーとマッピングされます。私はまた、バックエンドに電話をかけるたびにサインインしたくありません。

このWebサイトは、ASP.NET Core 1.1とエンティティフレームワークコアで開発される予定です。

私の主な質問は、ユーザー識別情報部分をどのように進めるべきですか?それをどのように通過させ、ブラウザにそれを格納するために何を使用すべきですか?

Entity Frameworkを使用してユーザーIDをデータベースに渡すことはできますか?

私の主な関心事は、私が作成したウェブサイトにサインインできても、データベースへのリクエストが実行されたときにサインインする必要があるということです(私はここで間違っているかもしれません)。

私はいくつかの面白いチュートリアルを見つけて同様のことを達成しましたが、ウェブサイトではなくデスクトップクライアントについて話しました。私の場合は、ウェブサイトとWeb APIを含むプロジェクトが1つあります。

私はこの3パートのコースを見つけました:

https://msftplayground.com/2017/04/part-1-azure-sql-database-with-azure-active-directory-authentication/

と、この1:

https://blogs.msdn.microsoft.com/benjaminperkins/2016/10/20/how-i-connected-a-console-application-to-a-web-api-protected-by-an-azure-active-directory/

は、応答のすべてのために事前にありがとうござい

答えて

0

私の主質問は、どのようにユーザーID pアート?それをどのように通過させ、ブラウザにそれを格納するために何を使用すべきですか?

クレームで認証される他の一般的なウェブアプリと同じです。 OAuth 20.0認証コード許可フローを使用し、Azure SQLデータベースのトークンを取得して接続を作成するだけです(code grant flow参照)。

2番目の質問は、Entity Frameworkを使用してユーザーIDをデータベースに渡すことですか?上述のよう

、我々はAzureのSQLデータベースのアクセストークンを取得することができ、認証した後、我々は、データベースへの接続を作成することができます。エンティティフレームの作業にこの接続を使用します。

SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(); 
builder["Data Source"] = "aad-managed-demo.database.windows.net"; // replace with your server name 
builder["Initial Catalog"] = "demo"; // replace with your database name 
builder["Connect Timeout"] = 30; 

string accessToken = TokenFactory.GetAccessToken(); 
if (accessToken == null) 
{ 
    Console.WriteLine("Fail to acuire the token to the database."); 
} 
using (SqlConnection connection = new SqlConnection(builder.ConnectionString)) 
{ 
    try 
    { 
     connection.AccessToken = accessToken; 
     connection.Open(); 
     Console.WriteLine("Connected to the database"); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.Message); 
    } 
} 

私の主な関心事は、私は私が作成したWebサイトにサインインすることができるよ場合でも、私はとき要求に再度サインインする必要がありますことをされています。ここでのコードは、トークンを使用して接続を作成することですデータベースが実行されます(私はここで間違っているかもしれません)。

サインインを追加する必要はありません。上記の説明のとおり、ユーザーは一度サインインするだけでAzure SQLデータベースに問い合わせることができます。 AzureのSQLデータベース用のトークン認証に関するコードサンプルが含まれ、ここで

とは便利ですブログ:

Token-based authentication support for Azure SQL DB using Azure AD auth

+0

応答をいただき、ありがとうございます。この例はとても役に立ちました。 – Chris4D

関連する問題