Asp.net 如何在本地测试Azure Active Directory(回复URL)
我已将test.NET Web Api升级为Azure应用程序服务,并在Azure Active Directory下注册了一个应用程序。然后我在本地做了一些测试,发现Azure想在登录后在应用注册中使用回复URL。应用程序注册中的回复URL是应用程序服务的URL。我的本地实例将类似于。在对Azure进行初始部署后,您应该如何在本地测试更改?我所能做的就是创建另一个应用程序注册以进行测试,使用我的本地主机回复URL,然后更新我的web.config以指向该开发应用程序注册。然后在再次发布之前,将web.config更新回其他应用注册 下面是我用于身份验证的代码,它基于一个简单的MVC项目中的标准模板。应用程序注册的值正在用于重定向URL,但可能我应该在测试时覆盖下面的值Asp.net 如何在本地测试Azure Active Directory(回复URL),asp.net,azure,azure-web-app-service,azure-active-directory,Asp.net,Azure,Azure Web App Service,Azure Active Directory,我已将test.NET Web Api升级为Azure应用程序服务,并在Azure Active Directory下注册了一个应用程序。然后我在本地做了一些测试,发现Azure想在登录后在应用注册中使用回复URL。应用程序注册中的回复URL是应用程序服务的URL。我的本地实例将类似于。在对Azure进行初始部署后,您应该如何在本地测试更改?我所能做的就是创建另一个应用程序注册以进行测试,使用我的本地主机回复URL,然后更新我的web.config以指向该开发应用程序注册。然后在再次发布之前,将
public class AccountController : Controller
{
public void SignIn()
{
// Send an OpenID Connect sign-in request.
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(new AuthenticationProperties { RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}
通过指定要在身份验证请求中使用的URL,可以拥有多个回复URL。您可以在Startup.cs中配置身份验证时执行此操作。您需要将重定向URI添加到您的
OpenIdConnectAuthenticationOptions.Notifications.RedirectToIdentityProvider
var openIdOptions = new OpenIdConnectAuthenticationOptions
{
//...
Notifications = new OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider = (context) =>
{
context.ProtocolMessage.RedirectUri = "<current reply uri>";
return Task.FromResult(0);
}
}
// ...
};
var openIdOptions=新的OpenIdConnectAuthenticationOptions
{
//...
通知=新的OpenIdConnectAuthenticationNotifications
{
RedirectToIdentityProvider=(上下文)=>
{
context.ProtocolMessage.RedirectUri=“”;
返回Task.FromResult(0);
}
}
// ...
};
该回复uri可以从web.config中提取,也可以使用context.Request
动态生成
如果要在投入生产后使用不同的广告应用程序,可以使用两个应用程序,并将客户端id和密码放入web.config。如果要在本地进行测试,只需添加localhost作为回复URL,并确保web.config也列出localhost
如果您尚未这样做,请参考此存储库:应用注册允许多个回复URL。我尝试将localhost URL添加到回复URL列表中,这允许我在本地进行测试,但它也破坏了已发布的应用程序服务。当登录到应用程序服务URL时,重定向决定使用我添加的第二个URL(localhost),这显然失败了。你可以让你的应用程序告诉Azure AD返回哪个URL。请看这里关于redirect_uri的部分:我刚刚看到了同一篇文章,并打算指出最下面的一条评论,即发布后不要在回复URL列表中保留“localhost”。我不清楚的是如何使用那篇文章中的信息覆盖回复URL。我的授权代码基于不同的示例,我的回复URL中确实定义了“localhost”。正在向第一篇文章添加代码示例。您可以编辑您的主机文件,为某些域名或端口添加localhost重定向。最后,再次回到这篇文章,并确认这将起作用。我为replyURL应用程序注册设置添加了两个值(一个用于生产,一个用于本地测试),然后在Azure门户中更新了生产版本的应用程序配置设置。现在,我的本地web配置具有localhost,而生产具有Azure设置。