我已经使用https://apps.dev.microsoft.com/和(在本地主机上时)注册了我的mvc应用程序,在更新了使用微软身份验证设法验证用户(使用clientid和secret)的所有NuGet包之后 - 运行正常!让我们忘记浪费的时间,发现我必须使用https://localhost:xxxx/signin-microsoft - 认为我必须提供我的回调方法端点。
现在,我必须做同样的事情,但是在应用程序注册部分中使用我在Azure Active Directory上注册的应用程序对用户进行身份验证。 注意:用户不是在azure中注册,而是在其他域上注册,但使用Microsoft身份验证。我刚刚更改了客户端ID和密码,以便在注册应用程序时指定在azure上生成的内容。登录HOWEVER后正在访问我的Callback方法,我需要读取用户电子邮件的loginInfo对象为NULL。我确保我有最新的软件包更新,我试图搜索花了3天时间查找只使用租户ID,权限等的应用程序。
我只需要使用在Microsoft AAD(Azure活动目录 - 注册的应用程序部分)上注册的应用程序使用Microsoft身份验证进行签名的个人帐户。我知道它有效,因为我已经看到它在其他应用程序上使用php,但是微软的代码/库并没有。
顺便说一句,我试过添加范围,调用同步到没有好处。我也尝试检查传入的数据,并说它拒绝访问,我非常确定客户端ID和密码是否正常。也许回复网址错了?但我提供的任何其他回调都会导致错误的请求,并且回调方法至少会被触发。我还启用了#34;签署用户"和"登录并阅读用户个人资料"来自azure的权限。我的想法已经不多了。任何帮助将非常感激。感谢
代码与使用个人帐户创建新的mvc Web应用程序时提供的代码相同,即在Startup.Auth.cs中:我有这个重要的部分和其他代码
var myObj = new MicrosoftAccountAuthenticationOptions()
{
ClientId = "xxx",
ClientSecret = "xxx",
};
myObj.Scope.Add("openid");
myObj.Scope.Add("email");
// myObj.Scope.Add("User.Read");
app.UseMicrosoftAccountAuthentication(myObj);
在AccountController.cs中,我有这个方法正在初始化对microsoft的请求
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
// Request a redirect to the external login provider
return new ChallengeResult(provider,
Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl
}));
}
和处理回调响应的这个(部分)方法:
[AllowAnonymous]
public async Task<ActionResult> ExternalLoginCallback(string returnUrl)
{
var loginInfo = await
AuthenticationManager.GetExternalLoginInfoAsync();
//...
}
答案 0 :(得分:0)