web-dev-qa-db-ja.com

OAuth 2.0を使用してAzure Active Directoryでユーザーを認証する方法は?

C#で記述されたREST AP​​Iがあり、既存のAzure ADサービスで認証する必要があります。現在、認証したいユーザーのユーザー名とパスワードを持っています。 Azure ADで認証し、サーバーからアクセストークンを受け取る必要があります。

誰かが私にこれを行う方法を説明するいくつかの記事/チュートリアルの方向を教えてもらえますか?

16
COBOL

ユーザー資格情報の処理は避けてください。 OAuth 2.0またはOpenID Connectを使用して資格情報を直接処理せずにトークンを取得することにより軽減されるユーザー資格情報を収集する場合、深刻なセキュリティの意味があります。また、独自の資格情報収集UI多要素認証が有効になっている場合、サインインが将来失敗する可能性がありますその場合、ユーザーを認証するために、収集するよりも多くの情報、たとえばワンタイムパスワードが必要になる場合があります。 OAuth 2.0またはOpenID Connectを介して認証エクスペリエンスを提示すると、使用されている特定の認証方法から隔離されます。ユーザーの収集Azure AD資格情報は、可能な限り避けるべき悪い習慣です。

次のサンプルが当てはまると確信できるほど正確なシナリオについての詳細はありませんが、少なくとも良い出発点を提供します。このサンプルは、可能な限り最も安全な方法でAzureリソースを呼び出すことができるREST APIを呼び出すネイティブアプリを作成する方法を示しています。

https://github.com/AzureADSamples/WebAPI-OnBehalfOf-DotNet

ここには、特定のシナリオのソリューションを構築するために使用できる他の多くのサンプルがあります。

https://github.com/AzureADSamples

詳細を提供していただければ、より具体的なガイダンスを提供できます。

18
Rich Randall

参照: http://www.cloudidentity.com/blog/2014/07/08/using-adal-net-to-authenticate-users-via-usernamepassword/

概要:UserCredentialを作成する

UserCredential uc = new UserCredential(user, password);

UserCredentialを使用してAcquireToken()関数の1つを呼び出します

public AuthenticationResult AcquireToken(string resource, string clientId, UserCredential userCredential);
public Task<AuthenticationResult> AcquireTokenAsync(string resource, string clientId, UserCredential userCredential);
4
dteviot