Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core 使用Microsoft.Identity.Web重新验证ASP.Net核心Web应用程序_Asp.net Core_Asp.net Core Mvc_Microsoft Identity Platform_Asp.net Core Razor Pages_Microsoft Identity Web - Fatal编程技术网

Asp.net core 使用Microsoft.Identity.Web重新验证ASP.Net核心Web应用程序

Asp.net core 使用Microsoft.Identity.Web重新验证ASP.Net核心Web应用程序,asp.net-core,asp.net-core-mvc,microsoft-identity-platform,asp.net-core-razor-pages,microsoft-identity-web,Asp.net Core,Asp.net Core Mvc,Microsoft Identity Platform,Asp.net Core Razor Pages,Microsoft Identity Web,我有一个asp.net核心web应用程序,使用Azure广告登录用户。由于一些用户经常共享计算机,他们可能无法登录/退出应用程序,这对于大多数操作来说都是正常的。但是,我现在有一个要求,即在更新应用程序的某些区域(即输入临床信息)时,强制用户重新输入密码。这是为了确保写入系统的敏感信息在正确的用户下方盖章,以便于审计 为了测试此功能,我使用上的信息和示例创建了一个新的asp.net core 5.0 Razor web应用程序。我遇到的问题是标准库(Microsoft.Identity.Web和

我有一个asp.net核心web应用程序,使用Azure广告登录用户。由于一些用户经常共享计算机,他们可能无法登录/退出应用程序,这对于大多数操作来说都是正常的。但是,我现在有一个要求,即在更新应用程序的某些区域(即输入临床信息)时,强制用户重新输入密码。这是为了确保写入系统的敏感信息在正确的用户下方盖章,以便于审计

为了测试此功能,我使用上的信息和示例创建了一个新的asp.net core 5.0 Razor web应用程序。我遇到的问题是标准库(Microsoft.Identity.Web和Microsoft.Identity.Web.UI)似乎没有提供我所能找到的功能

我尝试在我的应用注册中添加spa重定向,并使用MSAL,但问题是在成功调用loginPopup并使用其他用户帐户登录后,Razor应用仍然使用旧用户身份进行身份验证。也许Razor web应用不应该与SPA/MSAL功能结合使用

因此,我正在使用记录在案的方法。但是,我无法成功捕获到包含状态信息的重定向uri的POST请求,因为服务器返回302响应并重定向到/signin oidc。在此之后,我指定的重定向uri被加载,但作为GET请求,因此我的表单信息消失了。我需要此状态信息,以便知道重新验证成功完成后要继续执行的操作

如何使用Razor Pages或带有Microsoft.Identity.web库的MVC web应用程序进行重新身份验证

应用程序注册

应用程序代码

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

    services.AddAuthorization(options =>
    {
        // By default, all incoming requests will be authorized according to the default policy
        options.FallbackPolicy = options.DefaultPolicy;
    });
    services.AddRazorPages()
        .AddMvcOptions(options => { })
        .AddMicrosoftIdentityUI();
}

public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;
    private readonly IConfiguration _configuration;

    public IndexModel(ILogger<IndexModel> logger, IConfiguration configuration)
    {
        _logger = logger;
        _configuration = configuration;
    }

    public string AuthURL { get; set; }

    public void OnGet()
    {
        var nonce = Guid.NewGuid().ToString();
        var redirectHost = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host}";
        var redirectPath = "/Test";
        var encodedURL = UriHelper.Encode(new Uri(redirectHost + redirectPath));
        AuthURL = $"{_configuration["AzureAd:Instance"]}{_configuration["AzureAd:TenantId"]}/oauth2/v2.0/authorize?" +
            $"client_id={_configuration["AzureAd:ClientId"]}" +
            $"&redirect_uri={encodedURL}" +
            "&response_type=id_token" +
            "&response_mode=form_post" +
            "&scope=openid" +
            "&prompt=login" +
            "&hsu=1" +
            $"&login_hint={User.Identity.Name}" +
            $"&state=my_state" +
            $"&nonce={nonce}";
    }
}


@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
<a href="@Model.AuthURL" class="btn btn-outline-primary">ReAuth</a>
public void配置服务(IServiceCollection服务)
{
services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
.AddMicrosoftIdentityWebApp(Configuration.GetSection(“AzureAd”);
services.AddAuthorization(选项=>
{
//默认情况下,将根据默认策略授权所有传入请求
options.FallbackPolicy=options.DefaultPolicy;
});
services.AddRazorPages()
.addmvcopions(选项=>{})
.AddMicrosoftIdentityUI();
}
公共类索引模型:PageModel
{
专用只读ILogger\u记录器;
专用只读IConfiguration\u配置;
公共索引模型(ILogger记录器,IConfiguration配置)
{
_记录器=记录器;
_配置=配置;
}
公共字符串AuthURL{get;set;}
公共互联网
{
var nonce=Guid.NewGuid().ToString();
var redirectHost=$“{HttpContext.Request.Scheme}://{HttpContext.Request.Host}”;
var redirectPath=“/Test”;
var encodedURL=UriHelper.Encode(新Uri(重定向主机+重定向路径));
AuthURL=$“{u配置[“AzureAd:Instance”]}{{u配置[“AzureAd:TenantId”]}/oauth2/v2.0/authorize?”+
$“客户端id={u配置[“AzureAd:ClientId”]}”+
$“&重定向_uri={encodedURL}”+
“&response\u type=id\u令牌”+
“&response\u mode=form\u post”+
“&scope=openid”+
“&prompt=login”+
“&hsu=1”+
$“&login\u hint={User.Identity.Name}”+
$“&状态=我的状态”+
$“&nonce={nonce}”;
}
}
@页面
@模型索引模型
@{
ViewData[“Title”]=“主页”;
}
欢迎
了解

网络请求(单击重新授权按钮后)