この動作は、執筆時点でDotNetOpenAuthのmasterブランチとv4.0ブランチで異なります。パブリッククライアントでリソース所有者のパスワード資格付与タイプを使用しています。マスターブランチは期待どおりにトークンを発行します。v4.0ブランチは、要求を無効と見なします。実行フローはAccessRequestBindingElement.ProcessIncomingMessage
、次のコードが実行されるメソッドで終了します。
// Check that the client secret is correct.
var client = this.AuthorizationServer.GetClientOrThrow(accessRequest.ClientIdentifier);
string secret = client.Secret;
ErrorUtilities.VerifyProtocol(!string.IsNullOrEmpty(secret), Protocol.unauthorized_client); // an empty secret is not allowed for client authenticated calls.
クライアントはパブリックであるため、コードはエラーを生成します。ただし、上記のコードのコメントは、付与がクライアント認証されており、リソース所有者のパスワード資格情報ではないことを意味します。私はこれを間違って呼んでいますか?
マスターブランチでは、同じ呼び出しが機能します。