Openid 用于身份验证的DotNetOpenAuth OP自定义

Openid 用于身份验证的DotNetOpenAuth OP自定义,openid,customization,dotnetopenauth,Openid,Customization,Dotnetopenauth,我正在使用DotNetOpenAuth编写自己的OpenId提供程序。此提供商将仅由我自己的每个站点的依赖方使用。换句话说,它是一个封闭的提供者。因此,我想定制OP,使其仅在以下特定情况下进行身份验证 当站点/依赖方1进行身份验证时,用户只需通过身份验证挑战 当站点/依赖方#2进行身份验证时,用户必须通过身份验证挑战,但也必须已经拥有OP检索到的一些其他数据 RP可以将需求告知OP。我应该如何实现这一点 我应该使用某种定制PAPE(我该怎么做?)还是通过属性交换(我该怎么做?)或其他方式(我该怎

我正在使用DotNetOpenAuth编写自己的OpenId提供程序。此提供商将仅由我自己的每个站点的依赖方使用。换句话说,它是一个封闭的提供者。因此,我想定制OP,使其仅在以下特定情况下进行身份验证

当站点/依赖方1进行身份验证时,用户只需通过身份验证挑战

当站点/依赖方#2进行身份验证时,用户必须通过身份验证挑战,但也必须已经拥有OP检索到的一些其他数据

RP可以将需求告知OP。我应该如何实现这一点


我应该使用某种定制PAPE(我该怎么做?)还是通过属性交换(我该怎么做?)或其他方式(我该怎么做?)

RP可能会要求OP通过AX获取有关身份验证用户的其他信息。这可能是最简单、最合适的方法。DotNetOpenAuth中使用AX进行此操作的相关类是
FetchRequest
FetchResponse

通过检查OP上的
IHostProcessedRequest.Realm
属性,并通过检查
IHostProcessedRequest.IsReturnUrlDiscoverable()
方法返回
RelyingPartyDiscoveryResult.Success
来添加额外的保证,可以使OP仅响应来自白名单RPs的身份验证请求