我正在使用WIF构建自定义STS。在继承SecurityTokenService类之后,我使用WSTrustServiceHost和IWSTrust13SyncContract将我的STS托管为WCF服务。因为它只是一个原型STS,我使用的是BasicHttpBinding。
在客户端,我使用WSTrustChannelFactory连接到我的STS,我可以成功获得输出声明。
但是当我尝试添加身份验证信息(用户名和密码)时,我发现它无法传递到我的STS。
1,如果我使用BasicHttpBinding,即使我通过客户端factory.Credentials.UserName.UserName和.Password指定了它们,我也无法在STS上找到用户名和密码。
2,我改为使用UserNameWSTrustBinding(SecurityMode.Transport),但我仍然无法在STS中获取用户名和密码。
3,在STS中,方法GetScope,GetOutputClaimsIdentity的参数是我运行服务器控制台应用程序的主体,而不是我从客户端指定的那个。
4,我注册了另一个UserNameSecurityTokenHandler并覆盖了它的ValidateToken方法。但似乎STS没有调用这种方法。并且STS提出了一个例外,表示没有CreateToken实现。
5,我尝试了内置的WindowsUserNameTokenHandler,它也引发了同样的异常。
任何人都可以看看并给我一些关于如何处理的建议。