使用Office365进行用户身份验证并授予对网站的访问权限

时间:2019-02-07 04:32:16

标签: c# asp.net azure-active-directory microsoft-graph

我们有一个网站。我们通常使用Microsoft Forefront来询问用户其用户名和密码以进行登录。最近,我们有一项要求,即允许用户使用Office365登录到我们的网站。因此,我们必须将Office365集成到我们的网站中,以允许用户使用Office365登录到我们的网站。所以我正在尝试使用Microsoft.Graph。我已经将我的应用程序注册为网络,并获得了客户端ID和密钥。我正在使用此信息致电Microsoft Graph。

我尝试如下所示调用API。我的第一个请求(request1)成功,第二个请求(request2)成功,抛出错误,表明请求不正确

  

“远程服务器返回错误:(400)错误的请求。” System.Net.WebException **

var request1 = (HttpWebRequest)WebRequest.Create("https://login.microsoftonline.com/{tenant}/adminconsent?client_id=myclientidvalue&state=12345&redirect_uri=http://localhost:36541/");
var response1 = (HttpWebResponse)request.GetResponse();            
var responseString = new StreamReader(response1.GetResponseStream()).ReadToEnd();

var request2 = (HttpWebRequest)WebRequest.Create("https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token");
var postData = "client_id=myclientid";
postData += "&scope=http://localhost:36541/.default";
postData += "&client_secret=mysecretkey";
postData += "&grant_type=client_credentials";
var data = Encoding.ASCII.GetBytes(postData);
request2.Method = "POST";
request2.ContentType = "application/x-www-form-urlencoded";
request2.ContentLength = data.Length;
request1.Host = "login.microsoftonline.com";
using (var stream = request2.GetRequestStream())
{
    stream.Write(data, 0, data.Length);
}
var response2 = (HttpWebResponse)request2.GetResponse();
var responseString1 = new StreamReader(response2.GetResponseStream()).ReadToEnd();

0 个答案:

没有答案