我正在使用Xamarin Forms开发应用程序。我在azure portal上创建了一个目录。正如我在互联网上看到的引用,活动目录身份验证使用微软登录页面登录。
我想创建本机登录表单并将用户名传递给活动目录并对其进行身份验证。
是否可以以编程方式传递用户凭据并对用户进行身份验证? 我如何传递用户凭证?
我试过以下但是我得到了“(411)长度要求”例外
var request = WebRequest.Create(string.Format(@"https://login.microsoftonline.com/{0}/oauth2/token?client_id=5e811f4f-4fa4-451e-a439-ca05cabc02d7&grant_type=password&username=02atul.com@gmail.com&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);
}
}
}
我的用户名是我的电子邮件ID。用户名是否正确?因为我现在得到错误的请求错误。少了什么东西?
答案 0 :(得分:3)
从技术上讲,您可以使用更详细描述here with ADAL。
的用户名和密码流但是,您需要重新访问您的方案并了解它是否真正实现了Azure Active Directory平台的用途。
用户使用基于OAuth2的身份验证,只需与MS,FB,Google等受信任的身份提供商共享密码,即可获得安全性和安全性......一般情况下,安全意识的用户不希望输入密码密码进入您的随机网站,并相信您不会滥用该信息。如果您想使用AAD,您还应该使用我们的登录体验,因为这确实是客户在许多方面为我们的服务付出的代价。
编辑:如果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}