Asp.net Core OpenIdConnect (OIDC) 在哪里验证状态参数

Posted

技术标签:

【中文标题】Asp.net Core OpenIdConnect (OIDC) 在哪里验证状态参数【英文标题】:Asp.net Core OpenIdConnect (OIDC) Where to Validate State Parameter 【发布时间】:2020-10-20 06:00:14 【问题描述】:

在 OIDC 中间件中验证状态参数并可能拒绝请求的建议位置在哪里?

OnRedirectToIdentityProvider = (RedirectContext context) =>

    context.ProtocolMessage.State = "ENCODED_STATE_PARAMETER";
    return Task.CompletedTask;
 

谢谢, 鲁本

【问题讨论】:

【参考方案1】:

在挖掘了 OIDC 源之后,我找到了这个解决方案,

options = new OpenIdConnectOptions()
// ...
options.ProtocolValidator = new MyOIDCProtocalValidator();

public sealed class MyOIDCProtocalValidator: OpenIdConnectProtocolValidator

    public MyOIDCProtocalValidator(): base()
    
        // not sure if these are needed
        base.RequireState = true;
        base.RequireStateValidation = true;
    

    protected override void ValidateState(OpenIdConnectProtocolValidationContext validationContext)
    
        // validate state here 
        // if(valid) do nothing
        // else throw new OpenIdConnectProtocolInvalidStateException();
    

【讨论】:

以上是关于Asp.net Core OpenIdConnect (OIDC) 在哪里验证状态参数的主要内容,如果未能解决你的问题,请参考以下文章

Asp.NET Core进阶 第四篇 Asp.Net Core Blazor框架

.NET Core 1.0ASP.NET Core 1.0和EF Core 1.0简介

asp.net core 注入后仍然报错?

深入研究 Mini ASP.NET Core(迷你 ASP.NET Core),看看 ASP.NET Core 内部到底是如何运行的

.Net Core 学习 - ASP.NET Core 概念学习

ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 14. ASP.NET Core Identity 入门