【问题标题】:Asp.net Core OpenIdConnect (OIDC) Where to Validate State ParameterAsp.net Core OpenIdConnect (OIDC) 在哪里验证状态参数
【发布时间】:2020-10-20 06:00:14
【问题描述】:
在 OIDC 中间件中验证状态参数并可能拒绝请求的建议位置在哪里?
OnRedirectToIdentityProvider = (RedirectContext context) =>
{
context.ProtocolMessage.State = "ENCODED_STATE_PARAMETER";
return Task.CompletedTask;
}
谢谢,
鲁本
【问题讨论】:
标签:
asp.net-mvc
cookies
openid-connect
auth0
asp.net-core-2.2
【解决方案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();
}
}