以下のようにカスタム Open Id クライアントを作成しています。
public class CustomOpenIdClient : OpenIdClient
{
public CustomOpenIdClient() : base("TestOpenId", "`http://localhost:39167/server.aspx`")
{
}
protected override Dictionary<string, string> GetExtraData(IAuthenticationResponse response)
{
FetchResponse fetchResponse = response.GetExtension<FetchResponse>();
if (fetchResponse != null)
{
var extraData = new Dictionary<string, string>();
extraData.Add("email", fetchResponse.GetAttributeValue(WellKnownAttributes.Contact.Email));
extraData.Add("fullname", fetchResponse.GetAttributeValue(WellKnownAttributes.Name.FullName));
return extraData;
}
return null;
}
protected override void OnBeforeSendingAuthenticationRequest(IAuthenticationRequest request)
{
var fetchRequest = new FetchRequest();
fetchRequest.Attributes.AddRequired(WellKnownAttributes.Contact.Email);
fetchRequest.Attributes.AddRequired(WellKnownAttributes.Name.FullName);
request.AddExtension(fetchRequest);
}
}`
コードに見られるように、私が使用しようとしてhttp://localhost:39167/
いる OpenIdProvider は、DotNetOAuth サンプル、つまり OpenIdWebRingSsoProvider および OpenIdWebRingSsoRelyingParty によって開発されており、RP webconfig で次のように定義されています。
`<appSettings>
<add key="SsoProviderOPIdentifier" value="http://localhost:39167/"/>
<add key="SsoProviderOPEndpoint" value="http://localhost:39167/server.aspx"/>
</appSettings>`
そして、私は自分のウェブサイトに CustomOpenIdClient を登録しています
OAuthWebSecurity.RegisterClient(new CustomOpenIdClient(), "TestOpenId", new Dictionary<string, object>());
認証しようとすると、No OpenId End Point found が表示されます
OAuthWebSecurity.RequestAuthentication(Provider, ReturnUrl)
ローカルホストは、RP の webconfig のホワイトリストで既に定義されています。この No OpenId End point エラーの原因となっている、ここで何が欠けているのか教えてください。
ありがとう、
SB