summaryrefslogtreecommitdiffstats
path: root/samples/Consumer/SampleWcf.aspx.cs
diff options
context:
space:
mode:
authorAndrew Arnott <andrewarnott@gmail.com>2008-10-04 16:45:52 -0700
committerAndrew <andrewarnott@gmail.com>2008-10-04 16:45:52 -0700
commit9ffccf622b5c669027c8cbb9ee2f8735ea25d636 (patch)
tree5d25daff51635cd05e419d7fe42d25d6e1a3e262 /samples/Consumer/SampleWcf.aspx.cs
parent2e681a4b643fec2cdac42c729cb08ea3faa7a099 (diff)
downloadDotNetOpenAuth-9ffccf622b5c669027c8cbb9ee2f8735ea25d636.zip
DotNetOpenAuth-9ffccf622b5c669027c8cbb9ee2f8735ea25d636.tar.gz
DotNetOpenAuth-9ffccf622b5c669027c8cbb9ee2f8735ea25d636.tar.bz2
Added WCF sample consumer and service provider.
It's pretty delicate and a poor sample, but hey, it worked.
Diffstat (limited to 'samples/Consumer/SampleWcf.aspx.cs')
-rw-r--r--samples/Consumer/SampleWcf.aspx.cs76
1 files changed, 76 insertions, 0 deletions
diff --git a/samples/Consumer/SampleWcf.aspx.cs b/samples/Consumer/SampleWcf.aspx.cs
new file mode 100644
index 0000000..af89f61
--- /dev/null
+++ b/samples/Consumer/SampleWcf.aspx.cs
@@ -0,0 +1,76 @@
+using System;
+using System.Net;
+using System.ServiceModel;
+using System.ServiceModel.Channels;
+using DotNetOAuth;
+using DotNetOAuth.ChannelElements;
+using DotNetOAuth.Messaging;
+using SampleServiceProvider;
+
+/// <summary>
+/// Sample consumer of our Service Provider sample's WCF service.
+/// </summary>
+public partial class SampleWcf : System.Web.UI.Page {
+ protected void Page_Load(object sender, EventArgs e) {
+ if (!IsPostBack) {
+ if (Session["WcfTokenManager"] != null) {
+ Consumer consumer = CreateConsumer();
+ var accessTokenMessage = consumer.ProcessUserAuthorization();
+ if (accessTokenMessage != null) {
+ Session["WcfAccessToken"] = accessTokenMessage.AccessToken;
+ }
+ }
+ }
+ }
+
+ protected void getAuthorizationButton_Click(object sender, EventArgs e) {
+ Consumer consumer = CreateConsumer();
+ consumer.RequestUserAuthorization().Send();
+ }
+
+ protected void getNameButton_Click(object sender, EventArgs e) {
+ DataApiClient client = new DataApiClient();
+ var serviceEndpoint = new MessageReceivingEndpoint(client.Endpoint.Address.Uri, HttpDeliveryMethod.AuthorizationHeaderRequest | HttpDeliveryMethod.PostRequest);
+ var accessToken = Session["WcfAccessToken"] as string;
+ Consumer consumer = CreateConsumer();
+ WebRequest httpRequest = consumer.CreateAuthorizedRequest(serviceEndpoint, accessToken);
+
+ HttpRequestMessageProperty httpDetails = new HttpRequestMessageProperty();
+ httpDetails.Headers[HttpRequestHeader.Authorization] = httpRequest.Headers[HttpRequestHeader.Authorization];
+ string name;
+ using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) {
+ OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpDetails;
+ name = client.GetName();
+ }
+ Response.Write(name);
+ }
+
+ protected void getAgeButton_Click(object sender, EventArgs e) {
+ }
+
+ private Consumer CreateConsumer() {
+ string consumerKey = "sampleconsumer";
+ string consumerSecret = "samplesecret";
+ var tokenManager = Session["WcfTokenManager"] as InMemoryTokenManager;
+ if (tokenManager == null) {
+ tokenManager = new InMemoryTokenManager(consumerKey, consumerSecret);
+ Session["WcfTokenManager"] = tokenManager;
+ }
+ MessageReceivingEndpoint oauthEndpoint = new MessageReceivingEndpoint(
+ new Uri("http://localhost:65169/ServiceProvider/OAuth.ashx"),
+ HttpDeliveryMethod.PostRequest);
+ Consumer consumer = new Consumer(new ServiceProviderDescription {
+ RequestTokenEndpoint = oauthEndpoint,
+ UserAuthorizationEndpoint = oauthEndpoint,
+ AccessTokenEndpoint = oauthEndpoint,
+ TamperProtectionElements = new DotNetOAuth.Messaging.ITamperProtectionChannelBindingElement[] {
+ new HmacSha1SigningBindingElement(),
+ },
+ }, tokenManager) {
+ ConsumerKey = consumerKey,
+ ConsumerSecret = consumerSecret,
+ };
+
+ return consumer;
+ }
+}