diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2008-10-04 16:45:52 -0700 |
---|---|---|
committer | Andrew <andrewarnott@gmail.com> | 2008-10-04 16:45:52 -0700 |
commit | 9ffccf622b5c669027c8cbb9ee2f8735ea25d636 (patch) | |
tree | 5d25daff51635cd05e419d7fe42d25d6e1a3e262 /samples/Consumer/SampleWcf.aspx.cs | |
parent | 2e681a4b643fec2cdac42c729cb08ea3faa7a099 (diff) | |
download | DotNetOpenAuth-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.cs | 76 |
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;
+ }
+}
|