blob: a4e9f94520202751cb5f1213086fc3e468d9d9cf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
using System;
using System.Collections.Specialized;
using System.Text;
namespace Janrain.OpenId.Server
{
public class AssociateRequest : Request
{
#region Private Members
private string _assoc_type = QueryStringArgs.HMAC_SHA1;
private ServerSession _session;
#endregion
#region Constructor(s)
public AssociateRequest(NameValueCollection query)
: base()
{
string session_type = query.Get(QueryStringArgs.openid.session_type);
if (session_type == null)
{
_session = new PlainTextServerSession();
}
else if (session_type == QueryStringArgs.DH_SHA1)
{
_session = new DiffieHellmanServerSession(query);
}
else
{
throw new ProtocolException(query, "Unknown sessoin type " + session_type);
}
}
#endregion
#region Properties
public override string Mode
{
get { return QueryStringArgs.Modes.associate; }
}
#endregion
#region Methods
public Response Answer(Association assoc)
{
#region Trace
if (TraceUtil.Switch.TraceInfo)
{
TraceUtil.ServerTrace("Start processing response for AssociateRequest");
if (TraceUtil.Switch.TraceVerbose)
{
TraceUtil.ServerTrace("Association to be sent follows:");
TraceUtil.ServerTrace(assoc.ToString());
}
}
#endregion
Response response = new Response(this);
response.Fields[QueryStringArgs.openidnp.expires_in] = assoc.ExpiresIn;
response.Fields[QueryStringArgs.openidnp.assoc_type] = QueryStringArgs.HMAC_SHA1;
response.Fields[QueryStringArgs.openidnp.assoc_handle] = assoc.Handle;
NameValueCollection nvc = _session.Answer(assoc.Secret);
foreach (string key in nvc)
{
response.Fields[key] = nvc[key];
}
if (_session.SessionType != "plaintext")
{
response.Fields[QueryStringArgs.openidnp.session_type] = _session.SessionType;
}
#region Trace
if (TraceUtil.Switch.TraceInfo)
{
TraceUtil.ServerTrace("End processing response for AssociateRequest. AssociateRequest response successfully created. ");
if (TraceUtil.Switch.TraceVerbose)
{
TraceUtil.ServerTrace("Response follows. ");
TraceUtil.ServerTrace(response.ToString());
}
}
#endregion
return response;
}
#endregion
public override string ToString()
{
string returnString = "AssociateRequest._assoc_type = {0}";
return base.ToString() + Environment.NewLine + String.Format(returnString, _assoc_type);
}
}
}
|