我正在使用 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 它也引发了同样的异常。
任何人都可以看看并就如何处理给我一些建议。