Azure上的IdentityServer

时间:2019-03-28 15:42:34

标签: c# azure asp.net-core asp.net-core-mvc identityserver4

我试图制作一个ASP.NET Core Web应用程序来承载IdentityServer,并将其用作我的主要授权服务,并与许多其他应用程序共享。

我遵循了快速入门教程,该教程包括在空的MVC应用程序模板中安装nuget包(称为IdentityServer4)。

我的机器上一切正常(使用VS2017和VS2019预览版进行调试)。 我试图像以前的应用程序一样,将应用程序发布为Azure应用程序服务,并且运行良好。

在调试时,如果我打开浏览器并键入“ https://localhost:44316/”,则会看到此页面:

enter image description here

但是导航到“ https://xxx.azurewebsites.net”(即我发布应用程序的位置)不起作用。找不到响应404。

只需添加一些细节,如果我浏览此“ https://localhost:44316/Account/Login?ReturnUrl=%2Fgrants”,就会获得正确的登录页面,并在Azure上执行相同的操作会产生相同的结果。

因此,从本质上讲,除了主页外,它看起来还在工作。

我不是ASP.NET Core路由方面的专家,所以如果我的问题不太聪明,也不要怪我。

1 个答案:

答案 0 :(得分:8)

这实际上是预期的行为-如果您查看IdentityServer4.Quickstart.UI项目中提供的public IActionResult Index() { if (_environment.IsDevelopment()) { // only show in development return View(); } _logger.LogInformation("Homepage is disabled in production. Returning 404."); return NotFound(); } 的实现,则会看到以下实现(source):

@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@Component
public class AccountsController {   

    @GET
    @Path("/v1/acctDetails/{rqUID}")
    @Produces(MediaType.APPLICATION_JSON)
    @ApiResponses(value = { @ApiResponse(code = ResponseCodes.SUCCESS_200, message = ResponseCodes.SUCCESS_200_MSG),
            @ApiResponse(code = ResponseCodes.ERROR_500, message = ResponseCodes.ERROR_500_MSG),
            @ApiResponse(code = ResponseCodes.ERROR_404, message = ResponseCodes.ERROR_404_MSG) })
    public javax.ws.rs.core.Response getAccountInfoInq(@PathParam("rqUID") String RqUID, @QueryParam("tranDate") String tranDate) {
        return acctInfoInquiry.getAccountInfoInq(rqUID, tranDate);
    }
}

在Azure中运行时,该应用程序将不在开发环境中运行,因此将返回404 NotFound,如上所示。