summaryrefslogtreecommitdiffstats
path: root/src/DotNetOpenId/Provider/AssertionMessage.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/DotNetOpenId/Provider/AssertionMessage.cs')
-rw-r--r--src/DotNetOpenId/Provider/AssertionMessage.cs21
1 files changed, 11 insertions, 10 deletions
diff --git a/src/DotNetOpenId/Provider/AssertionMessage.cs b/src/DotNetOpenId/Provider/AssertionMessage.cs
index 3224c61..b238595 100644
--- a/src/DotNetOpenId/Provider/AssertionMessage.cs
+++ b/src/DotNetOpenId/Provider/AssertionMessage.cs
@@ -13,7 +13,9 @@ namespace DotNetOpenId.Provider {
message.Fields[protocol.openidnp.mode] = protocol.Args.Mode.id_res;
message.Fields[protocol.openidnp.identity] = localIdentifier;
- message.Fields[protocol.openidnp.return_to] = message.RedirectUrl.AbsoluteUri;
+ // We use OriginalString for the return_to to help protect against interop
+ // problems with RPs that require an explicit port, or who knows what else.
+ message.Fields[protocol.openidnp.return_to] = message.RedirectUrl.OriginalString;
message.Signed.AddRange(new[]{
protocol.openidnp.return_to,
protocol.openidnp.identity,
@@ -34,16 +36,17 @@ namespace DotNetOpenId.Provider {
// as appropriate by the Signatory.Sign method.
}
- public static void CreateNegativeAssertion(EncodableResponse message,
- bool immediateMode, Uri setupUrl) {
+ public static void CreateNegativeAssertion(EncodableResponse message, CheckIdRequest request) {
if (message == null) throw new ArgumentNullException("message");
+ if (request == null) throw new ArgumentNullException("request");
+
Protocol protocol = message.Protocol;
- if (immediateMode) {
+ if (request.Immediate) {
if (protocol.Version.Major >= 2) {
message.Fields[protocol.openidnp.mode] = protocol.Args.Mode.setup_needed;
} else {
message.Fields[protocol.openidnp.mode] = protocol.Args.Mode.id_res;
- message.Fields[protocol.openidnp.user_setup_url] = setupUrl.AbsoluteUri;
+ message.Fields[protocol.openidnp.user_setup_url] = request.SetupUrl.AbsoluteUri;
}
} else {
message.Fields[protocol.openidnp.mode] = protocol.Args.Mode.cancel;
@@ -58,12 +61,10 @@ namespace DotNetOpenId.Provider {
if (request.IsAuthenticated.Value) {
AssertionMessage.CreatePositiveAssertion(response, request.Provider,
request.LocalIdentifier, request.ClaimedIdentifier);
- if (TraceUtil.Switch.TraceInfo)
- Trace.TraceInformation("Created positive assertion for {0}.", request.ClaimedIdentifier);
+ Logger.InfoFormat("Created positive assertion for {0}.", request.ClaimedIdentifier);
} else {
- AssertionMessage.CreateNegativeAssertion(response, request.Immediate, request.SetupUrl);
- if (TraceUtil.Switch.TraceInfo)
- Trace.TraceInformation("Created negative assertion for {0}.", request.ClaimedIdentifier);
+ AssertionMessage.CreateNegativeAssertion(response, request);
+ Logger.InfoFormat("Created negative assertion for {0}.", request.ClaimedIdentifier);
}
return response;
}