標準のログイン ページではなく ADFS 2.0 を介してログインするカスタム ログイン ページを使用するように SharePoint 2013 をセットアップする方法を考えています。私はこのチュートリアルに従っています: http://blog.helloitsliam.com/Lists/Posts/Post.aspx?ID=76
web.config に変更を加えた後、次のコードをページに記述しました。
using (var wsFactory = new WSTrustChannelFactory(new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), new EndpointAddress(endpoint)))
{
wsFactory.Credentials.UserName.UserName = signInControl.UserName;
wsFactory.Credentials.UserName.Password = signInControl.Password;
wsFactory.TrustVersion = TrustVersion.WSTrust13;
var wsChannel = wsFactory.CreateChannel();
var requestSecurityToken = new RequestSecurityToken { RequestType = RequestTypes.Issue, AppliesTo = new EndpointReference(AppliesToEndpointUrl), KeyType = KeyTypes.Symmetric };
try
{
var genericSecurityToken = wsChannel.Issue(requestSecurityToken) as GenericXmlSecurityToken;
var securityTokenHandlers = FederatedAuthentication.ServiceConfiguration.SecurityTokenHandlers;
var securityToken = securityTokenHandlers.ReadToken(new XmlTextReader(new StringReader(genericSecurityToken.TokenXml.OuterXml)));
SPSecurity.RunWithElevatedPrivileges(() =>
Microsoft.SharePoint.IdentityModel.SPFederationAuthenticationModule.Current.SetPrincipalAndWriteSessionToken(securityToken));
var rUrl = Request.QueryString.Get("Source");
Response.Redirect(String.IsNullOrEmpty(rUrl) ? "~/Pages/Default.aspx" : rUrl);
}
catch (Exception ex)
{
Response.Write(ex.StackTrace);
}
デバッガーは、wsChannel.Issue メソッドの呼び出しで次のエラーをスローします。
ID3082: リクエスト スコープが無効であるか、サポートされていません。
では、このようなエラーの原因をどのように調査すればよいでしょうか。