私は最近ACS、AAL、WAADを調べたばかりであり、ユーザーをIDPのログインページにリダイレクトすることは避けたいと思います。ユーザーを自分のサイト内にとどめ、認証するユーザーを選択するためのドロップダウンと、ユーザー名とパスワードを要求する領域を提示して、コードを介してトークンを取得したいと思います。これは可能ですか?
私はいくつかのサンプルアプリケーションをレビューし、簡単なモックアップを作成していますが、うまく機能していないようです。
_authContext = new AuthenticationContext("https://littledeadbunny.accesscontrol.windows.net");
string enteredEmailDomain = UserNameTextbox.Text.Substring(UserNameTextbox.Text.IndexOf('@') + 1);
IList<IdentityProviderDescriptor> idpdList = _authContext.GetProviders("http://littledeadbunny.com/NonInteractive");
foreach (IdentityProviderDescriptor idpd in idpdList)
{
if (String.Compare(ServiceRealmDropDownList.SelectedValue, idpd.Name, StringComparison.OrdinalIgnoreCase) == 0)
{
Credential credential;
credential = new UsernamePasswordCredential(enteredEmailDomain, UserNameTextbox.Text, PasswordTextbox.Text);
_assertionCredential = _authContext.AcquireToken("http://littledeadbunny.com/NonInteractive", idpd, credential);
return;
}
}
上記のコードを使用して、Windows Azure Active Directoryユーザー(admin)を使用しようとすると、「ルートレベルのデータが無効です。1行目、1行目」というエラーが表示されます。トークンを取得しようとしています。
Googleを使用すると、「0x8010000C:要求されたプロトコルに一致するIDプロバイダーがありません」というエラーが表示されます。
動作するサンプルがある場合は?明らかに間違ったことをしている場合は、訂正していただければ幸いです。