1

私はXamarinフォームを使用してアプリケーションを開発しています。私は青空のポータルにディレクトリを作成しました。インターネット上での参照を参照すると、アクティブディレクトリ認証はMicrosoftログインページを使用してログインします。XamarinのAzure Active Directoryのユーザー名を使用したサイレントログイン

ネイティブログインフォームを作成し、アクティブなディレクトリにユーザー名を渡して認証します。

ユーザー資格情報をプログラマチックに渡してユーザーを認証することはできますか? ユーザー資格情報を渡すにはどうすればよいですか?

私は、次の試してみましたが、私は私のユーザー名は私の電子メールIDで

  var request = WebRequest.Create(string.Format(@"https://login.microsoftonline.com/{0}/oauth2/token?client_id=5e811f4f-4fa4-451e-a439-ca05cabc02d7&grant_type=password&[email protected]&password=userpassword&scope=openid", tenant)); 
      request.ContentType = "application/x-www-form-urlencoded"; 
      request.Method = "POST"; 
      using (HttpWebResponse response = await request.GetResponseAsync() as HttpWebResponse) 
      { 
       if (response.StatusCode != HttpStatusCode.OK) 
        Debug.WriteLine("Error fetching data. Server returned status code: {0}", response.StatusCode); 
       using (StreamReader reader = new StreamReader(response.GetResponseStream())) 
       { 
        var content = reader.ReadToEnd(); 
        if (string.IsNullOrWhiteSpace(content)) 
        { 
         Debug.WriteLine("Response contained empty body..."); 
        } 
        else { 
         Debug.WriteLine("Response Body: \r\n {0}", content); 
        } 
       } 
      } 

"(411)の長さに必要な" 例外が発生しました。正しいユーザー名ですか?私は今、悪い要求エラーを取得しています。何が欠けている?

AAD User Name

+0

ほとんどのOAuth2ベースの認証(今)あなたがいることを得るために彼らのOAuthログインプロセスを使用することを強制する/必要ゴールデン・アクセスとリフレッシュ・トークン。マイクロソフト、グーグル、フェイスブックなど(OAuth2システムはすべてこのセキュリティー事実に基づいています)あなたのウェブサイトからユーザーがログインし、あなたのアプリがOAuth UI /プロセス用のAndroid Chrome 'CustomTabs'またはiOS' SFSafariViewController'を使用している場合、あなたのユーザーは再度ログインする必要はなく、Vice Versaもログインする必要があります。 – SushiHangover

+0

お返事ありがとうございます。しかし、私はアクティブディレクトリを暗黙のうちに認証したいと思う。これはどんな方法でも可能ですか?ユーザーのメールとパスワードを渡したいだけです。 – Atul

+0

技術的には、Graph/AD Rest-based APIで何かを行うためにアクセストークンを取得する必要があるため、完全にOAuth2クライアントプロセスを自分で処理することは技術的には可能ですが、 path ... 'プロトコルフロー'と '認証フロー'のMSドキュメントを見直してください。これはデーモン/サーバとしてあなたの "app"を誤って登録していることを意味します:https://docs.microsoft.com/en- us/azure/active-directory/develop/active-directory-authentication-scenarios – SushiHangover

答えて

3

技術的に、あなたは、より詳細here with ADALに記述されているユーザー名とパスワードの流れを使用することができます。

しかし、シナリオを再訪し、実際にAzure Active Directoryプラットフォームの目的が達成されているかどうかを理解する必要があります。

ユーザーは、OAuth2ベースの認証を使用して、MS、FB、Googleなどの信頼できるアイデンティティプロバイダとパスワードを共有するだけのセキュリティと安全性を得ることができます。一般に、安全意識の高い人は、ランダムなウェブサイトにパスワードを入力し、その情報を悪用しないことを信頼してください。 AADを使用したい場合は、実際には多くの点で当社のサービスで顧客が支払っているものであるため、ログイン経験を使用する必要があります。

EDIT:ADALはもはやこのフローをサポートしている場合、あなたは、単にHTTPを自分で要求生成できます。

POST: https://login.microsoftonline.com/xxxxx.onmicrosoft.com/oauth2/token 

Content-Type: application/x-www-form-urlencoded 
resource={resource}&client_id={clientId}&grant_type=password&username={userName}&password={password}&scope=openid&client_secret={clientSecret} 
+0

私はすでに特定のリンクを通過しました。 AquireTokenメソッドはユーザー資格情報を受け入れません。その古いポスト。 – Atul

+0

同じ動作を行う生のHTTP POSTリクエストを含めるように私の回答を更新しました。具体的には 'grant_type = password'ということに注意してください。 –

+0

@Shwan参考に感謝します。少し助けてくれますか? 「リモートサーバーからエラーが返されました:(411)長さが必要です」という例外がリモートサーバーから発生しました。 – Atul

関連する問題