/// <summary> /// Creates the RSTR and finally read the information from TokenDescriptor and apply /// those to the RSTR. /// </summary> /// <param name="request">The RST from the request.</param> /// <param name="tokenDescriptor">The token descriptor which contains the information for the issued token.</param> /// <returns>The RSTR for the response, null if the token descriptor is null.</returns> protected virtual RSTR GetResponse(RST request, SecurityTokenDescriptor tokenDescriptor) { if (tokenDescriptor != null) { RSTR rstr = new RSTR(request); tokenDescriptor.ApplyTo(rstr); // Set the replyTo address of the relying party (if any) in the outgoing RSTR from the generated // token descriptor (STD) based on the table below: // // RST.ReplyTo STD.ReplyToAddress RSTR.ReplyTo // =========== ==================== ============ // Set Not Set Not Set // Set Set Set to STD.ReplyToAddress // Not Set Not Set Not Set // Not Set Set Not Set // if (request.ReplyTo != null) { rstr.ReplyTo = tokenDescriptor.ReplyToAddress; } // // Set the appliesTo address (if any) in the outgoing RSTR from the generated token descriptor. // if (!string.IsNullOrEmpty(tokenDescriptor.AppliesToAddress)) { rstr.AppliesTo = new EndpointReference(tokenDescriptor.AppliesToAddress); } return(rstr); } else { return(null); } }