diff options
author | Andrew Arnott <andrewarnott@gmail.com> | 2010-07-22 10:15:49 -0700 |
---|---|---|
committer | Andrew Arnott <andrewarnott@gmail.com> | 2010-07-22 10:15:49 -0700 |
commit | 4d2ec520fe9b42d0d0f1b764029a33dab906e68a (patch) | |
tree | 17918d5b1c4580017d0cb2c6e6ddd8153cdadcfa /samples/OAuthServiceProvider/Code | |
parent | 431bf8c104dd498d1894083fc2ed4fa795bba7df (diff) | |
download | DotNetOpenAuth-4d2ec520fe9b42d0d0f1b764029a33dab906e68a.zip DotNetOpenAuth-4d2ec520fe9b42d0d0f1b764029a33dab906e68a.tar.gz DotNetOpenAuth-4d2ec520fe9b42d0d0f1b764029a33dab906e68a.tar.bz2 |
Stripping OAuth 1.0 support from the OAuthServiceProvider sample.
Diffstat (limited to 'samples/OAuthServiceProvider/Code')
15 files changed, 141 insertions, 705 deletions
diff --git a/samples/OAuthServiceProvider/Code/Constants.cs b/samples/OAuthServiceProvider/Code/Constants.cs deleted file mode 100644 index 3e629f0..0000000 --- a/samples/OAuthServiceProvider/Code/Constants.cs +++ /dev/null @@ -1,32 +0,0 @@ -namespace OAuthServiceProvider.Code { - using System; - using DotNetOpenAuth.Messaging; - using DotNetOpenAuth.OAuth; - using DotNetOpenAuth.OAuth.ChannelElements; - - /// <summary> - /// Service Provider definitions. - /// </summary> - public static class Constants { - public static Uri WebRootUrl { get; set; } - - public static ServiceProviderDescription SelfDescription { - get { - ServiceProviderDescription description = new ServiceProviderDescription { - AccessTokenEndpoint = new MessageReceivingEndpoint(new Uri(WebRootUrl, "/OAuth.ashx"), HttpDeliveryMethods.PostRequest), - RequestTokenEndpoint = new MessageReceivingEndpoint(new Uri(WebRootUrl, "/OAuth.ashx"), HttpDeliveryMethods.PostRequest), - UserAuthorizationEndpoint = new MessageReceivingEndpoint(new Uri(WebRootUrl, "/OAuth.ashx"), HttpDeliveryMethods.PostRequest), - TamperProtectionElements = new ITamperProtectionChannelBindingElement[] { - new HmacSha1SigningBindingElement(), - }, - }; - - return description; - } - } - - public static ServiceProvider CreateServiceProvider() { - return new ServiceProvider(SelfDescription, Global.TokenManager, Global.NonceStore); - } - } -}
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/CustomOAuthTypeProvider.cs b/samples/OAuthServiceProvider/Code/CustomOAuthTypeProvider.cs deleted file mode 100644 index 67da17c..0000000 --- a/samples/OAuthServiceProvider/Code/CustomOAuthTypeProvider.cs +++ /dev/null @@ -1,34 +0,0 @@ -namespace OAuthServiceProvider.Code { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using DotNetOpenAuth.Messaging; - using DotNetOpenAuth.OAuth.ChannelElements; - using DotNetOpenAuth.OAuth.Messages; - - /// <summary> - /// A custom class that will cause the OAuth library to use our custom message types - /// where we have them. - /// </summary> - public class CustomOAuthMessageFactory : OAuthServiceProviderMessageFactory { - /// <summary> - /// Initializes a new instance of the <see cref="CustomOAuthMessageFactory"/> class. - /// </summary> - /// <param name="tokenManager">The token manager instance to use.</param> - public CustomOAuthMessageFactory(IServiceProviderTokenManager tokenManager) - : base(tokenManager) { - } - - public override IDirectedProtocolMessage GetNewRequestMessage(MessageReceivingEndpoint recipient, IDictionary<string, string> fields) { - var message = base.GetNewRequestMessage(recipient, fields); - - // inject our own type here to replace the standard one - if (message is UnauthorizedTokenRequest) { - message = new RequestScopedTokenMessage(recipient, message.Version); - } - - return message; - } - } -}
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/DataClasses.dbml b/samples/OAuthServiceProvider/Code/DataClasses.dbml index 5522ec8..e3c9097 100644 --- a/samples/OAuthServiceProvider/Code/DataClasses.dbml +++ b/samples/OAuthServiceProvider/Code/DataClasses.dbml @@ -8,7 +8,7 @@ <Column Name="FullName" Type="System.String" DbType="NVarChar(150)" CanBeNull="false" /> <Column Name="Age" Type="System.Int32" DbType="int" CanBeNull="true" /> <Association Name="User_FavoriteSite" Member="FavoriteSites" ThisKey="UserId" OtherKey="UserId" Type="FavoriteSite" /> - <Association Name="User_OAuthToken" Member="OAuthTokens" ThisKey="UserId" OtherKey="UserId" Type="OAuthToken" /> + <Association Name="User_OAuthToken" Member="ClientAuthorizations" Storage="_OAuthTokens" ThisKey="UserId" OtherKey="UserId" Type="ClientAuthorization" /> </Type> </Table> <Table Name="dbo.FavoriteSite" Member="FavoriteSites"> @@ -19,39 +19,33 @@ <Association Name="User_FavoriteSite" Member="User" ThisKey="UserId" OtherKey="UserId" Type="User" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" /> </Type> </Table> - <Table Name="dbo.OAuthConsumer" Member="OAuthConsumers"> - <Type Name="OAuthConsumer"> - <Column Name="ConsumerId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" /> - <Column Name="ConsumerKey" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" /> - <Column Name="ConsumerSecret" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" /> + <Table Name="dbo.OAuthConsumer" Member="Clients"> + <Type Name="Client"> + <Column Name="ConsumerId" Member="ClientId" Storage="_ConsumerId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" /> + <Column Name="ConsumerKey" Member="ClientIdentifier" Storage="_ConsumerKey" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" /> + <Column Name="ConsumerSecret" Member="ClientSecret" Storage="_ConsumerSecret" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" /> <Column Name="Callback" Type="System.String" CanBeNull="true" /> - <Column Name="VerificationCodeFormat" Type="DotNetOpenAuth.OAuth.VerificationCodeFormat" CanBeNull="false" /> - <Column Name="VerificationCodeLength" Type="System.Int32" CanBeNull="false" /> - <Association Name="OAuthConsumer_OAuthToken" Member="OAuthTokens" ThisKey="ConsumerId" OtherKey="ConsumerId" Type="OAuthToken" /> + <Column Name="" Member="Name" Storage="_VerificationCodeLength" Type="System.String" CanBeNull="false" /> + <Association Name="OAuthConsumer_OAuthToken" Member="ClientAuthorizations" Storage="_OAuthTokens" ThisKey="ClientId" OtherKey="ClientId" Type="ClientAuthorization" /> </Type> </Table> - <Table Name="dbo.OAuthToken" Member="OAuthTokens"> - <Type Name="OAuthToken"> - <Column Name="TokenId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" /> - <Column Name="Token" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" /> - <Column Name="TokenSecret" Type="System.String" DbType="NVarChar(50) NOT NULL" CanBeNull="false" /> - <Column Name="State" Type="OAuthServiceProvider.Code.TokenAuthorizationState" DbType="INT NOT NULL" CanBeNull="false" /> - <Column Name="IssueDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" /> - <Column Name="ConsumerId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> + <Table Name="dbo.OAuthToken" Member="ClientAuthorizations"> + <Type Name="ClientAuthorization"> + <Column Name="TokenId" Member="AuthorizationId" Storage="_TokenId" Type="System.Int32" DbType="Int NOT NULL IDENTITY" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" /> + <Column Name="IssueDate" Member="CreatedOn" Storage="_IssueDate" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" /> + <Column Name="ConsumerId" Member="ClientId" Storage="_ConsumerId" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> <Column Name="UserId" Type="System.Int32" DbType="Int" CanBeNull="true" /> <Column Name="Scope" Type="System.String" DbType="nvarchar(MAX)" CanBeNull="false" /> - <Column Name="RequestTokenVerifier" Type="System.String" CanBeNull="true" /> - <Column Name="RequestTokenCallback" Type="System.String" CanBeNull="true" /> - <Column Name="ConsumerVersion" Type="System.String" CanBeNull="true" /> - <Association Name="OAuthConsumer_OAuthToken" Member="OAuthConsumer" ThisKey="ConsumerId" OtherKey="ConsumerId" Type="OAuthConsumer" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" /> + <Column Name="RequestTokenVerifier" Member="ExpirationDate" Storage="_RequestTokenVerifier" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" /> + <Association Name="OAuthConsumer_OAuthToken" Member="Client" Storage="_OAuthConsumer" ThisKey="ClientId" OtherKey="ClientId" Type="Client" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" /> <Association Name="User_OAuthToken" Member="User" ThisKey="UserId" OtherKey="UserId" Type="User" IsForeignKey="true" DeleteRule="CASCADE" /> </Type> </Table> <Table Name="" Member="Nonces"> <Type Name="Nonce"> - <Column Member="Context" Type="System.String" IsPrimaryKey="true" CanBeNull="false" /> - <Column Member="Code" Type="System.String" IsPrimaryKey="true" CanBeNull="false" /> - <Column Member="Timestamp" Type="System.DateTime" IsPrimaryKey="true" CanBeNull="false" /> + <Column Name="Context" Type="System.String" IsPrimaryKey="true" CanBeNull="false" /> + <Column Name="Code" Type="System.String" IsPrimaryKey="true" CanBeNull="false" /> + <Column Name="Timestamp" Type="System.DateTime" IsPrimaryKey="true" CanBeNull="false" /> </Type> </Table> </Database>
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/DataClasses.dbml.layout b/samples/OAuthServiceProvider/Code/DataClasses.dbml.layout index 9b80443..e300457 100644 --- a/samples/OAuthServiceProvider/Code/DataClasses.dbml.layout +++ b/samples/OAuthServiceProvider/Code/DataClasses.dbml.layout @@ -14,16 +14,16 @@ <elementListCompartment Id="eba736b9-f9ec-484b-8083-c77155a49e4e" absoluteBounds="3.515, 1.085, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> </nestedChildShapes> </classShape> - <classShape Id="f909becb-85b1-4fe6-bb16-3feb3e4fe3ee" absoluteBounds="0.625, 3.25, 2, 1.9631982421874996"> - <DataClassMoniker Name="/DataClassesDataContext/OAuthConsumer" /> + <classShape Id="f909becb-85b1-4fe6-bb16-3feb3e4fe3ee" absoluteBounds="0.5, 3.5, 2, 1.7708968098958327"> + <DataClassMoniker Name="/DataClassesDataContext/Client" /> <nestedChildShapes> - <elementListCompartment Id="464308c4-d112-4448-b0c9-d9b82fb0ca4e" absoluteBounds="0.64, 3.71, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> + <elementListCompartment Id="464308c4-d112-4448-b0c9-d9b82fb0ca4e" absoluteBounds="0.515, 3.96, 1.9700000000000002, 1.2108968098958333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> </nestedChildShapes> </classShape> - <classShape Id="895ebbc8-8352-4c04-9e53-b8e6c8302d36" absoluteBounds="3.5, 3.125, 2, 2.9247054036458326"> - <DataClassMoniker Name="/DataClassesDataContext/OAuthToken" /> + <classShape Id="895ebbc8-8352-4c04-9e53-b8e6c8302d36" absoluteBounds="3.5, 3.125, 2, 1.9631982421874996"> + <DataClassMoniker Name="/DataClassesDataContext/ClientAuthorization" /> <nestedChildShapes> - <elementListCompartment Id="403126d0-3d2a-4af4-b0b8-c489a830bbd4" absoluteBounds="3.515, 3.585, 1.9700000000000002, 2.364705403645833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> + <elementListCompartment Id="403126d0-3d2a-4af4-b0b8-c489a830bbd4" absoluteBounds="3.515, 3.585, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> </nestedChildShapes> </classShape> <associationConnector edgePoints="[(2.625 : 1.31814697265625); (3.5 : 1.31814697265625)]" fixedFrom="NotFixed" fixedTo="NotFixed"> @@ -33,14 +33,14 @@ <classShapeMoniker Id="8a79b099-7f87-4766-907a-db2c3e1b5716" /> </nodes> </associationConnector> - <associationConnector edgePoints="[(2.625 : 4.23159912109375); (3.5 : 4.23159912109375)]" fixedFrom="NotFixed" fixedTo="NotFixed"> - <AssociationMoniker Name="/DataClassesDataContext/OAuthConsumer/OAuthConsumer_OAuthToken" /> + <associationConnector edgePoints="[(2.5 : 4.29409912109375); (3.5 : 4.29409912109375)]" fixedFrom="Algorithm" fixedTo="Algorithm"> + <AssociationMoniker Name="/DataClassesDataContext/Client/OAuthConsumer_OAuthToken" /> <nodes> <classShapeMoniker Id="f909becb-85b1-4fe6-bb16-3feb3e4fe3ee" /> <classShapeMoniker Id="895ebbc8-8352-4c04-9e53-b8e6c8302d36" /> </nodes> </associationConnector> - <associationConnector edgePoints="[(0.53125 : 2.27089680989583); (0.53125 : 5.66270182291667); (3.5 : 5.66270182291667)]" fixedFrom="NotFixed" fixedTo="NotFixed"> + <associationConnector edgePoints="[(2.42590266277457 : 2.27089680989583); (2.42590266277457 : 3.25); (2.75 : 3.25); (2.75 : 3.67829756054687); (3.5 : 3.67829756054687)]" fixedFrom="Caller" fixedTo="Algorithm"> <AssociationMoniker Name="/DataClassesDataContext/User/User_OAuthToken" /> <nodes> <classShapeMoniker Id="696d2c69-040e-411d-9257-bb664b743834" /> diff --git a/samples/OAuthServiceProvider/Code/DataClasses.designer.cs b/samples/OAuthServiceProvider/Code/DataClasses.designer.cs index 3c0d936..eabcb1c 100644 --- a/samples/OAuthServiceProvider/Code/DataClasses.designer.cs +++ b/samples/OAuthServiceProvider/Code/DataClasses.designer.cs @@ -36,12 +36,12 @@ namespace OAuthServiceProvider.Code partial void InsertFavoriteSite(FavoriteSite instance); partial void UpdateFavoriteSite(FavoriteSite instance); partial void DeleteFavoriteSite(FavoriteSite instance); - partial void InsertOAuthConsumer(OAuthConsumer instance); - partial void UpdateOAuthConsumer(OAuthConsumer instance); - partial void DeleteOAuthConsumer(OAuthConsumer instance); - partial void InsertOAuthToken(OAuthToken instance); - partial void UpdateOAuthToken(OAuthToken instance); - partial void DeleteOAuthToken(OAuthToken instance); + partial void InsertClient(Client instance); + partial void UpdateClient(Client instance); + partial void DeleteClient(Client instance); + partial void InsertClientAuthorization(ClientAuthorization instance); + partial void UpdateClientAuthorization(ClientAuthorization instance); + partial void DeleteClientAuthorization(ClientAuthorization instance); partial void InsertNonce(Nonce instance); partial void UpdateNonce(Nonce instance); partial void DeleteNonce(Nonce instance); @@ -93,19 +93,19 @@ namespace OAuthServiceProvider.Code } } - public System.Data.Linq.Table<OAuthConsumer> OAuthConsumers + public System.Data.Linq.Table<Client> Clients { get { - return this.GetTable<OAuthConsumer>(); + return this.GetTable<Client>(); } } - public System.Data.Linq.Table<OAuthToken> OAuthTokens + public System.Data.Linq.Table<ClientAuthorization> ClientAuthorizations { get { - return this.GetTable<OAuthToken>(); + return this.GetTable<ClientAuthorization>(); } } @@ -136,7 +136,7 @@ namespace OAuthServiceProvider.Code private EntitySet<FavoriteSite> _FavoriteSites; - private EntitySet<OAuthToken> _OAuthTokens; + private EntitySet<ClientAuthorization> _OAuthTokens; #region Extensibility Method Definitions partial void OnLoaded(); @@ -157,7 +157,7 @@ namespace OAuthServiceProvider.Code public User() { this._FavoriteSites = new EntitySet<FavoriteSite>(new Action<FavoriteSite>(this.attach_FavoriteSites), new Action<FavoriteSite>(this.detach_FavoriteSites)); - this._OAuthTokens = new EntitySet<OAuthToken>(new Action<OAuthToken>(this.attach_OAuthTokens), new Action<OAuthToken>(this.detach_OAuthTokens)); + this._OAuthTokens = new EntitySet<ClientAuthorization>(new Action<ClientAuthorization>(this.attach_OAuthTokens), new Action<ClientAuthorization>(this.detach_OAuthTokens)); OnCreated(); } @@ -274,8 +274,8 @@ namespace OAuthServiceProvider.Code } } - [global::System.Data.Linq.Mapping.AssociationAttribute(Name="User_OAuthToken", Storage="_OAuthTokens", ThisKey="UserId", OtherKey="UserId")] - public EntitySet<OAuthToken> OAuthTokens + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="User_ClientAuthorization", Storage="_OAuthTokens", ThisKey="UserId", OtherKey="UserId")] + public EntitySet<ClientAuthorization> ClientAuthorizations { get { @@ -319,13 +319,13 @@ namespace OAuthServiceProvider.Code entity.User = null; } - private void attach_OAuthTokens(OAuthToken entity) + private void attach_OAuthTokens(ClientAuthorization entity) { this.SendPropertyChanging(); entity.User = this; } - private void detach_OAuthTokens(OAuthToken entity) + private void detach_OAuthTokens(ClientAuthorization entity) { this.SendPropertyChanging(); entity.User = null; @@ -484,7 +484,7 @@ namespace OAuthServiceProvider.Code } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.OAuthConsumer")] - public partial class OAuthConsumer : INotifyPropertyChanging, INotifyPropertyChanged + public partial class Client : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); @@ -497,38 +497,34 @@ namespace OAuthServiceProvider.Code private string _Callback; - private DotNetOpenAuth.OAuth.VerificationCodeFormat _VerificationCodeFormat; + private string _VerificationCodeLength; - private int _VerificationCodeLength; - - private EntitySet<OAuthToken> _OAuthTokens; + private EntitySet<ClientAuthorization> _OAuthTokens; #region Extensibility Method Definitions partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); - partial void OnConsumerIdChanging(int value); - partial void OnConsumerIdChanged(); - partial void OnConsumerKeyChanging(string value); - partial void OnConsumerKeyChanged(); - partial void OnConsumerSecretChanging(string value); - partial void OnConsumerSecretChanged(); + partial void OnClientIdChanging(int value); + partial void OnClientIdChanged(); + partial void OnClientIdentifierChanging(string value); + partial void OnClientIdentifierChanged(); + partial void OnClientSecretChanging(string value); + partial void OnClientSecretChanged(); partial void OnCallbackChanging(string value); partial void OnCallbackChanged(); - partial void OnVerificationCodeFormatChanging(DotNetOpenAuth.OAuth.VerificationCodeFormat value); - partial void OnVerificationCodeFormatChanged(); - partial void OnVerificationCodeLengthChanging(int value); - partial void OnVerificationCodeLengthChanged(); + partial void OnNameChanging(string value); + partial void OnNameChanged(); #endregion - public OAuthConsumer() + public Client() { - this._OAuthTokens = new EntitySet<OAuthToken>(new Action<OAuthToken>(this.attach_OAuthTokens), new Action<OAuthToken>(this.detach_OAuthTokens)); + this._OAuthTokens = new EntitySet<ClientAuthorization>(new Action<ClientAuthorization>(this.attach_OAuthTokens), new Action<ClientAuthorization>(this.detach_OAuthTokens)); OnCreated(); } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ConsumerId", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] - public int ConsumerId + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="ConsumerId", Storage="_ConsumerId", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] + public int ClientId { get { @@ -538,17 +534,17 @@ namespace OAuthServiceProvider.Code { if ((this._ConsumerId != value)) { - this.OnConsumerIdChanging(value); + this.OnClientIdChanging(value); this.SendPropertyChanging(); this._ConsumerId = value; - this.SendPropertyChanged("ConsumerId"); - this.OnConsumerIdChanged(); + this.SendPropertyChanged("ClientId"); + this.OnClientIdChanged(); } } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ConsumerKey", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] - public string ConsumerKey + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="ConsumerKey", Storage="_ConsumerKey", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string ClientIdentifier { get { @@ -558,17 +554,17 @@ namespace OAuthServiceProvider.Code { if ((this._ConsumerKey != value)) { - this.OnConsumerKeyChanging(value); + this.OnClientIdentifierChanging(value); this.SendPropertyChanging(); this._ConsumerKey = value; - this.SendPropertyChanged("ConsumerKey"); - this.OnConsumerKeyChanged(); + this.SendPropertyChanged("ClientIdentifier"); + this.OnClientIdentifierChanged(); } } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ConsumerSecret", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] - public string ConsumerSecret + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="ConsumerSecret", Storage="_ConsumerSecret", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] + public string ClientSecret { get { @@ -578,11 +574,11 @@ namespace OAuthServiceProvider.Code { if ((this._ConsumerSecret != value)) { - this.OnConsumerSecretChanging(value); + this.OnClientSecretChanging(value); this.SendPropertyChanging(); this._ConsumerSecret = value; - this.SendPropertyChanged("ConsumerSecret"); - this.OnConsumerSecretChanged(); + this.SendPropertyChanged("ClientSecret"); + this.OnClientSecretChanged(); } } } @@ -607,28 +603,8 @@ namespace OAuthServiceProvider.Code } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_VerificationCodeFormat")] - public DotNetOpenAuth.OAuth.VerificationCodeFormat VerificationCodeFormat - { - get - { - return this._VerificationCodeFormat; - } - set - { - if ((this._VerificationCodeFormat != value)) - { - this.OnVerificationCodeFormatChanging(value); - this.SendPropertyChanging(); - this._VerificationCodeFormat = value; - this.SendPropertyChanged("VerificationCodeFormat"); - this.OnVerificationCodeFormatChanged(); - } - } - } - - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_VerificationCodeLength")] - public int VerificationCodeLength + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="", Storage="_VerificationCodeLength", CanBeNull=false)] + public string Name { get { @@ -638,17 +614,17 @@ namespace OAuthServiceProvider.Code { if ((this._VerificationCodeLength != value)) { - this.OnVerificationCodeLengthChanging(value); + this.OnNameChanging(value); this.SendPropertyChanging(); this._VerificationCodeLength = value; - this.SendPropertyChanged("VerificationCodeLength"); - this.OnVerificationCodeLengthChanged(); + this.SendPropertyChanged("Name"); + this.OnNameChanged(); } } } - [global::System.Data.Linq.Mapping.AssociationAttribute(Name="OAuthConsumer_OAuthToken", Storage="_OAuthTokens", ThisKey="ConsumerId", OtherKey="ConsumerId")] - public EntitySet<OAuthToken> OAuthTokens + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Client_ClientAuthorization", Storage="_OAuthTokens", ThisKey="ClientId", OtherKey="ClientId")] + public EntitySet<ClientAuthorization> ClientAuthorizations { get { @@ -680,33 +656,27 @@ namespace OAuthServiceProvider.Code } } - private void attach_OAuthTokens(OAuthToken entity) + private void attach_OAuthTokens(ClientAuthorization entity) { this.SendPropertyChanging(); - entity.OAuthConsumer = this; + entity.Client = this; } - private void detach_OAuthTokens(OAuthToken entity) + private void detach_OAuthTokens(ClientAuthorization entity) { this.SendPropertyChanging(); - entity.OAuthConsumer = null; + entity.Client = null; } } [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.OAuthToken")] - public partial class OAuthToken : INotifyPropertyChanging, INotifyPropertyChanged + public partial class ClientAuthorization : INotifyPropertyChanging, INotifyPropertyChanged { private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); private int _TokenId; - private string _Token; - - private string _TokenSecret; - - private OAuthServiceProvider.Code.TokenAuthorizationState _State; - private System.DateTime _IssueDate; private int _ConsumerId; @@ -715,13 +685,9 @@ namespace OAuthServiceProvider.Code private string _Scope; - private string _RequestTokenVerifier; + private System.DateTime _RequestTokenVerifier; - private string _RequestTokenCallback; - - private string _ConsumerVersion; - - private EntityRef<OAuthConsumer> _OAuthConsumer; + private EntityRef<Client> _OAuthConsumer; private EntityRef<User> _User; @@ -729,39 +695,29 @@ namespace OAuthServiceProvider.Code partial void OnLoaded(); partial void OnValidate(System.Data.Linq.ChangeAction action); partial void OnCreated(); - partial void OnTokenIdChanging(int value); - partial void OnTokenIdChanged(); - partial void OnTokenChanging(string value); - partial void OnTokenChanged(); - partial void OnTokenSecretChanging(string value); - partial void OnTokenSecretChanged(); - partial void OnStateChanging(OAuthServiceProvider.Code.TokenAuthorizationState value); - partial void OnStateChanged(); - partial void OnIssueDateChanging(System.DateTime value); - partial void OnIssueDateChanged(); - partial void OnConsumerIdChanging(int value); - partial void OnConsumerIdChanged(); + partial void OnAuthorizationIdChanging(int value); + partial void OnAuthorizationIdChanged(); + partial void OnCreatedOnChanging(System.DateTime value); + partial void OnCreatedOnChanged(); + partial void OnClientIdChanging(int value); + partial void OnClientIdChanged(); partial void OnUserIdChanging(System.Nullable<int> value); partial void OnUserIdChanged(); partial void OnScopeChanging(string value); partial void OnScopeChanged(); - partial void OnRequestTokenVerifierChanging(string value); - partial void OnRequestTokenVerifierChanged(); - partial void OnRequestTokenCallbackChanging(string value); - partial void OnRequestTokenCallbackChanged(); - partial void OnConsumerVersionChanging(string value); - partial void OnConsumerVersionChanged(); + partial void OnExpirationDateChanging(System.DateTime value); + partial void OnExpirationDateChanged(); #endregion - public OAuthToken() + public ClientAuthorization() { - this._OAuthConsumer = default(EntityRef<OAuthConsumer>); + this._OAuthConsumer = default(EntityRef<Client>); this._User = default(EntityRef<User>); OnCreated(); } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TokenId", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] - public int TokenId + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="TokenId", Storage="_TokenId", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)] + public int AuthorizationId { get { @@ -771,77 +727,17 @@ namespace OAuthServiceProvider.Code { if ((this._TokenId != value)) { - this.OnTokenIdChanging(value); + this.OnAuthorizationIdChanging(value); this.SendPropertyChanging(); this._TokenId = value; - this.SendPropertyChanged("TokenId"); - this.OnTokenIdChanged(); + this.SendPropertyChanged("AuthorizationId"); + this.OnAuthorizationIdChanged(); } } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Token", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] - public string Token - { - get - { - return this._Token; - } - set - { - if ((this._Token != value)) - { - this.OnTokenChanging(value); - this.SendPropertyChanging(); - this._Token = value; - this.SendPropertyChanged("Token"); - this.OnTokenChanged(); - } - } - } - - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TokenSecret", DbType="NVarChar(50) NOT NULL", CanBeNull=false)] - public string TokenSecret - { - get - { - return this._TokenSecret; - } - set - { - if ((this._TokenSecret != value)) - { - this.OnTokenSecretChanging(value); - this.SendPropertyChanging(); - this._TokenSecret = value; - this.SendPropertyChanged("TokenSecret"); - this.OnTokenSecretChanged(); - } - } - } - - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_State", DbType="INT NOT NULL", CanBeNull=false)] - public OAuthServiceProvider.Code.TokenAuthorizationState State - { - get - { - return this._State; - } - set - { - if ((this._State != value)) - { - this.OnStateChanging(value); - this.SendPropertyChanging(); - this._State = value; - this.SendPropertyChanged("State"); - this.OnStateChanged(); - } - } - } - - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IssueDate", DbType="DateTime NOT NULL")] - public System.DateTime IssueDate + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="IssueDate", Storage="_IssueDate", DbType="DateTime NOT NULL")] + public System.DateTime CreatedOn { get { @@ -851,17 +747,17 @@ namespace OAuthServiceProvider.Code { if ((this._IssueDate != value)) { - this.OnIssueDateChanging(value); + this.OnCreatedOnChanging(value); this.SendPropertyChanging(); this._IssueDate = value; - this.SendPropertyChanged("IssueDate"); - this.OnIssueDateChanged(); + this.SendPropertyChanged("CreatedOn"); + this.OnCreatedOnChanged(); } } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ConsumerId", DbType="Int NOT NULL")] - public int ConsumerId + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="ConsumerId", Storage="_ConsumerId", DbType="Int NOT NULL")] + public int ClientId { get { @@ -871,15 +767,11 @@ namespace OAuthServiceProvider.Code { if ((this._ConsumerId != value)) { - if (this._OAuthConsumer.HasLoadedOrAssignedValue) - { - throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); - } - this.OnConsumerIdChanging(value); + this.OnClientIdChanging(value); this.SendPropertyChanging(); this._ConsumerId = value; - this.SendPropertyChanged("ConsumerId"); - this.OnConsumerIdChanged(); + this.SendPropertyChanged("ClientId"); + this.OnClientIdChanged(); } } } @@ -928,8 +820,8 @@ namespace OAuthServiceProvider.Code } } - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RequestTokenVerifier")] - public string RequestTokenVerifier + [global::System.Data.Linq.Mapping.ColumnAttribute(Name="RequestTokenVerifier", Storage="_RequestTokenVerifier", DbType="DateTime NOT NULL")] + public System.DateTime ExpirationDate { get { @@ -939,57 +831,17 @@ namespace OAuthServiceProvider.Code { if ((this._RequestTokenVerifier != value)) { - this.OnRequestTokenVerifierChanging(value); + this.OnExpirationDateChanging(value); this.SendPropertyChanging(); this._RequestTokenVerifier = value; - this.SendPropertyChanged("RequestTokenVerifier"); - this.OnRequestTokenVerifierChanged(); - } - } - } - - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_RequestTokenCallback")] - public string RequestTokenCallback - { - get - { - return this._RequestTokenCallback; - } - set - { - if ((this._RequestTokenCallback != value)) - { - this.OnRequestTokenCallbackChanging(value); - this.SendPropertyChanging(); - this._RequestTokenCallback = value; - this.SendPropertyChanged("RequestTokenCallback"); - this.OnRequestTokenCallbackChanged(); - } - } - } - - [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ConsumerVersion")] - public string ConsumerVersion - { - get - { - return this._ConsumerVersion; - } - set - { - if ((this._ConsumerVersion != value)) - { - this.OnConsumerVersionChanging(value); - this.SendPropertyChanging(); - this._ConsumerVersion = value; - this.SendPropertyChanged("ConsumerVersion"); - this.OnConsumerVersionChanged(); + this.SendPropertyChanged("ExpirationDate"); + this.OnExpirationDateChanged(); } } } - [global::System.Data.Linq.Mapping.AssociationAttribute(Name="OAuthConsumer_OAuthToken", Storage="_OAuthConsumer", ThisKey="ConsumerId", OtherKey="ConsumerId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")] - public OAuthConsumer OAuthConsumer + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Client_ClientAuthorization", Storage="_OAuthConsumer", ThisKey="ClientId", OtherKey="ClientId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")] + public Client Client { get { @@ -997,7 +849,7 @@ namespace OAuthServiceProvider.Code } set { - OAuthConsumer previousValue = this._OAuthConsumer.Entity; + Client previousValue = this._OAuthConsumer.Entity; if (((previousValue != value) || (this._OAuthConsumer.HasLoadedOrAssignedValue == false))) { @@ -1005,24 +857,24 @@ namespace OAuthServiceProvider.Code if ((previousValue != null)) { this._OAuthConsumer.Entity = null; - previousValue.OAuthTokens.Remove(this); + previousValue.ClientAuthorizations.Remove(this); } this._OAuthConsumer.Entity = value; if ((value != null)) { - value.OAuthTokens.Add(this); - this._ConsumerId = value.ConsumerId; + value.ClientAuthorizations.Add(this); + this._ConsumerId = value.ClientId; } else { this._ConsumerId = default(int); } - this.SendPropertyChanged("OAuthConsumer"); + this.SendPropertyChanged("Client"); } } } - [global::System.Data.Linq.Mapping.AssociationAttribute(Name="User_OAuthToken", Storage="_User", ThisKey="UserId", OtherKey="UserId", IsForeignKey=true, DeleteRule="CASCADE")] + [global::System.Data.Linq.Mapping.AssociationAttribute(Name="User_ClientAuthorization", Storage="_User", ThisKey="UserId", OtherKey="UserId", IsForeignKey=true, DeleteRule="CASCADE")] public User User { get @@ -1039,12 +891,12 @@ namespace OAuthServiceProvider.Code if ((previousValue != null)) { this._User.Entity = null; - previousValue.OAuthTokens.Remove(this); + previousValue.ClientAuthorizations.Remove(this); } this._User.Entity = value; if ((value != null)) { - value.OAuthTokens.Add(this); + value.ClientAuthorizations.Add(this); this._UserId = value.UserId; } else diff --git a/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs b/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs index f0c10d1..7c37a25 100644 --- a/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs +++ b/samples/OAuthServiceProvider/Code/DatabaseNonceStore.cs @@ -1,10 +1,7 @@ namespace OAuthServiceProvider.Code { using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using DotNetOpenAuth.Messaging.Bindings; using System.Data.SqlClient; + using DotNetOpenAuth.Messaging.Bindings; /// <summary> /// A database-persisted nonce store. diff --git a/samples/OAuthServiceProvider/Code/DatabaseTokenManager.cs b/samples/OAuthServiceProvider/Code/DatabaseTokenManager.cs deleted file mode 100644 index 721e124..0000000 --- a/samples/OAuthServiceProvider/Code/DatabaseTokenManager.cs +++ /dev/null @@ -1,159 +0,0 @@ -//----------------------------------------------------------------------- -// <copyright file="DatabaseTokenManager.cs" company="Andrew Arnott"> -// Copyright (c) Andrew Arnott. All rights reserved. -// </copyright> -//----------------------------------------------------------------------- - -namespace OAuthServiceProvider.Code { - using System; - using System.Collections.Generic; - using System.Diagnostics; - using System.Linq; - using DotNetOpenAuth.OAuth.ChannelElements; - using DotNetOpenAuth.OAuth.Messages; - - public class DatabaseTokenManager : IServiceProviderTokenManager { - #region IServiceProviderTokenManager - - public IConsumerDescription GetConsumer(string consumerKey) { - var consumerRow = Global.DataContext.OAuthConsumers.SingleOrDefault( - consumerCandidate => consumerCandidate.ConsumerKey == consumerKey); - if (consumerRow == null) { - throw new KeyNotFoundException(); - } - - return consumerRow; - } - - public IServiceProviderRequestToken GetRequestToken(string token) { - try { - return Global.DataContext.OAuthTokens.First(t => t.Token == token && t.State != TokenAuthorizationState.AccessToken); - } catch (InvalidOperationException ex) { - throw new KeyNotFoundException("Unrecognized token", ex); - } - } - - public IServiceProviderAccessToken GetAccessToken(string token) { - try { - return Global.DataContext.OAuthTokens.First(t => t.Token == token && t.State == TokenAuthorizationState.AccessToken); - } catch (InvalidOperationException ex) { - throw new KeyNotFoundException("Unrecognized token", ex); - } - } - - public void UpdateToken(IServiceProviderRequestToken token) { - // Nothing to do here, since we're using Linq To SQL. - } - - #endregion - - #region ITokenManager Members - - public string GetTokenSecret(string token) { - var tokenRow = Global.DataContext.OAuthTokens.SingleOrDefault( - tokenCandidate => tokenCandidate.Token == token); - if (tokenRow == null) { - throw new ArgumentException(); - } - - return tokenRow.TokenSecret; - } - - public void StoreNewRequestToken(UnauthorizedTokenRequest request, ITokenSecretContainingMessage response) { - RequestScopedTokenMessage scopedRequest = (RequestScopedTokenMessage)request; - var consumer = Global.DataContext.OAuthConsumers.Single(consumerRow => consumerRow.ConsumerKey == request.ConsumerKey); - string scope = scopedRequest.Scope; - OAuthToken newToken = new OAuthToken { - OAuthConsumer = consumer, - Token = response.Token, - TokenSecret = response.TokenSecret, - IssueDate = DateTime.UtcNow, - Scope = scope, - }; - - Global.DataContext.OAuthTokens.InsertOnSubmit(newToken); - Global.DataContext.SubmitChanges(); - } - - /// <summary> - /// Checks whether a given request token has already been authorized - /// by some user for use by the Consumer that requested it. - /// </summary> - /// <param name="requestToken">The Consumer's request token.</param> - /// <returns> - /// True if the request token has already been fully authorized by the user - /// who owns the relevant protected resources. False if the token has not yet - /// been authorized, has expired or does not exist. - /// </returns> - public bool IsRequestTokenAuthorized(string requestToken) { - var tokenFound = Global.DataContext.OAuthTokens.SingleOrDefault( - token => token.Token == requestToken && - token.State == TokenAuthorizationState.AuthorizedRequestToken); - return tokenFound != null; - } - - public void ExpireRequestTokenAndStoreNewAccessToken(string consumerKey, string requestToken, string accessToken, string accessTokenSecret) { - var data = Global.DataContext; - var consumerRow = data.OAuthConsumers.Single(consumer => consumer.ConsumerKey == consumerKey); - var tokenRow = data.OAuthTokens.Single(token => token.Token == requestToken && token.OAuthConsumer == consumerRow); - Debug.Assert(tokenRow.State == TokenAuthorizationState.AuthorizedRequestToken, "The token should be authorized already!"); - - // Update the existing row to be an access token. - tokenRow.IssueDate = DateTime.UtcNow; - tokenRow.State = TokenAuthorizationState.AccessToken; - tokenRow.Token = accessToken; - tokenRow.TokenSecret = accessTokenSecret; - } - - /// <summary> - /// Classifies a token as a request token or an access token. - /// </summary> - /// <param name="token">The token to classify.</param> - /// <returns>Request or Access token, or invalid if the token is not recognized.</returns> - public TokenType GetTokenType(string token) { - var tokenRow = Global.DataContext.OAuthTokens.SingleOrDefault(tokenCandidate => tokenCandidate.Token == token); - if (tokenRow == null) { - return TokenType.InvalidToken; - } else if (tokenRow.State == TokenAuthorizationState.AccessToken) { - return TokenType.AccessToken; - } else { - return TokenType.RequestToken; - } - } - - #endregion - - public void AuthorizeRequestToken(string requestToken, User user) { - if (requestToken == null) { - throw new ArgumentNullException("requestToken"); - } - if (user == null) { - throw new ArgumentNullException("user"); - } - - var tokenRow = Global.DataContext.OAuthTokens.SingleOrDefault( - tokenCandidate => tokenCandidate.Token == requestToken && - tokenCandidate.State == TokenAuthorizationState.UnauthorizedRequestToken); - if (tokenRow == null) { - throw new ArgumentException(); - } - - tokenRow.State = TokenAuthorizationState.AuthorizedRequestToken; - tokenRow.User = user; - } - - public OAuthConsumer GetConsumerForToken(string token) { - if (String.IsNullOrEmpty(token)) { - throw new ArgumentNullException("requestToken"); - } - - var tokenRow = Global.DataContext.OAuthTokens.SingleOrDefault( - tokenCandidate => tokenCandidate.Token == token); - if (tokenRow == null) { - throw new ArgumentException(); - } - - return tokenRow.OAuthConsumer; - } - } -}
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/Global.cs b/samples/OAuthServiceProvider/Code/Global.cs index 7c2e9f7..bcfa8ae 100644 --- a/samples/OAuthServiceProvider/Code/Global.cs +++ b/samples/OAuthServiceProvider/Code/Global.cs @@ -4,7 +4,6 @@ using System.ServiceModel; using System.Text; using System.Web; - using DotNetOpenAuth.OAuth.Messages; using DotNetOpenAuth.OAuth2; using DotNetOpenAuth.OAuth2.Messages; @@ -41,19 +40,12 @@ } } - public static DatabaseTokenManager TokenManager { get; set; } - public static DatabaseNonceStore NonceStore { get; set; } public static User LoggedInUser { get { return Global.DataContext.Users.SingleOrDefault(user => user.OpenIDClaimedIdentifier == HttpContext.Current.User.Identity.Name); } } - public static UserAuthorizationRequest PendingOAuthAuthorization { - get { return HttpContext.Current.Session["authrequest"] as UserAuthorizationRequest; } - set { HttpContext.Current.Session["authrequest"] = value; } - } - public static EndUserAuthorizationRequest PendingOAuth2Authorization { get { return HttpContext.Current.Session["authrequest"] as EndUserAuthorizationRequest; } @@ -87,12 +79,6 @@ } } - public static void AuthorizePendingRequestToken() { - ITokenContainingMessage tokenMessage = PendingOAuthAuthorization; - TokenManager.AuthorizeRequestToken(tokenMessage.Token, LoggedInUser); - PendingOAuthAuthorization = null; - } - private static void CommitAndCloseDatabaseIfNecessary() { var dataContext = dataContextSimple; if (dataContext != null) { @@ -110,11 +96,6 @@ appPath += "/"; } - // This will break in IIS Integrated Pipeline mode, since applications - // start before the first incoming request context is available. - // TODO: fix this. - Constants.WebRootUrl = new Uri(HttpContext.Current.Request.Url, appPath); - Global.TokenManager = new DatabaseTokenManager(); Global.NonceStore = new DatabaseNonceStore(); } diff --git a/samples/OAuthServiceProvider/Code/OAuth2AuthorizationServer.cs b/samples/OAuthServiceProvider/Code/OAuth2AuthorizationServer.cs index 00503c4..210e2ad 100644 --- a/samples/OAuthServiceProvider/Code/OAuth2AuthorizationServer.cs +++ b/samples/OAuthServiceProvider/Code/OAuth2AuthorizationServer.cs @@ -40,8 +40,8 @@ } public IConsumerDescription GetClient(string clientIdentifier) { - var consumerRow = Global.DataContext.OAuthConsumers.SingleOrDefault( - consumerCandidate => consumerCandidate.ConsumerKey == clientIdentifier); + var consumerRow = Global.DataContext.Clients.SingleOrDefault( + consumerCandidate => consumerCandidate.ClientIdentifier == clientIdentifier); if (consumerRow == null) { throw new ArgumentOutOfRangeException("clientIdentifier"); } diff --git a/samples/OAuthServiceProvider/Code/OAuthAuthorizationManager.cs b/samples/OAuthServiceProvider/Code/OAuthAuthorizationManager.cs index 3c8a3be..aa5428f 100644 --- a/samples/OAuthServiceProvider/Code/OAuthAuthorizationManager.cs +++ b/samples/OAuthServiceProvider/Code/OAuthAuthorizationManager.cs @@ -9,8 +9,6 @@ using System.ServiceModel.Security; using DotNetOpenAuth.Messaging; - using DotNetOpenAuth.OAuth; - using DotNetOpenAuth.OAuth.ChannelElements; using DotNetOpenAuth.OAuth2; using ProtocolException = System.ServiceModel.ProtocolException; @@ -31,7 +29,7 @@ var requestUri = operationContext.RequestContext.RequestMessage.Properties["OriginalHttpRequestUri"] as Uri; try { - var principal = this.VerifyOAuth2(httpDetails, requestUri); + var principal = VerifyOAuth2(httpDetails, requestUri); if (principal != null) { var policy = new OAuthPrincipalAuthorizationPolicy(principal); var policies = new List<IAuthorizationPolicy> { @@ -63,19 +61,7 @@ return false; } - private OAuthPrincipal VerifyOAuth1(HttpRequestMessageProperty httpDetails, Uri requestUri) { - ServiceProvider sp = Constants.CreateServiceProvider(); - var auth = sp.ReadProtectedResourceAuthorization(httpDetails, requestUri); - if (auth != null) { - var accessToken = Global.DataContext.OAuthTokens.Single(token => token.Token == auth.AccessToken); - var principal = sp.CreatePrincipal(auth); - return principal; - } - - return null; - } - - private OAuthPrincipal VerifyOAuth2(HttpRequestMessageProperty httpDetails, Uri requestUri) { + private static IPrincipal VerifyOAuth2(HttpRequestMessageProperty httpDetails, Uri requestUri) { // for this sample where the auth server and resource server are the same site, // we use the same public/private key. var resourceServer = new ResourceServer( @@ -83,15 +69,11 @@ OAuth2AuthorizationServer.AsymmetricKey, OAuth2AuthorizationServer.AsymmetricKey)); - string username; - HashSet<string> scope; - var error = resourceServer.VerifyAccess(new HttpRequestInfo(httpDetails, requestUri), out username, out scope); - if (error == null) { - var principal = new OAuthPrincipal(username, scope.ToArray()); - return principal; - } else { - return null; - } + IPrincipal result; + var error = resourceServer.VerifyAccess(new HttpRequestInfo(httpDetails, requestUri), out result); + + // TODO: return the prepared error code. + return error != null ? null : result; } } }
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/OAuthConsumer.cs b/samples/OAuthServiceProvider/Code/OAuthConsumer.cs index 8291929..bf97950 100644 --- a/samples/OAuthServiceProvider/Code/OAuthConsumer.cs +++ b/samples/OAuthServiceProvider/Code/OAuthConsumer.cs @@ -9,47 +9,19 @@ namespace OAuthServiceProvider.Code { using System.Collections.Generic; using System.Linq; using System.Web; - using DotNetOpenAuth.OAuth.ChannelElements; + using DotNetOpenAuth.OAuth2; - public partial class OAuthConsumer : IConsumerDescription, DotNetOpenAuth.OAuth2.IConsumerDescription { + public partial class Client : IConsumerDescription { #region IConsumerDescription Members - string IConsumerDescription.Key { - get { return this.ConsumerKey; } - } - string IConsumerDescription.Secret { - get { return this.ConsumerSecret; } - } - - System.Security.Cryptography.X509Certificates.X509Certificate2 IConsumerDescription.Certificate { - get { return null; } + get { return this.ClientSecret; } } Uri IConsumerDescription.Callback { get { return string.IsNullOrEmpty(this.Callback) ? null : new Uri(this.Callback); } } - DotNetOpenAuth.OAuth.VerificationCodeFormat IConsumerDescription.VerificationCodeFormat { - get { return this.VerificationCodeFormat; } - } - - int IConsumerDescription.VerificationCodeLength { - get { return this.VerificationCodeLength; } - } - - #endregion - - #region IConsumerDescription Members - - string DotNetOpenAuth.OAuth2.IConsumerDescription.Secret { - get { return this.ConsumerSecret; } - } - - Uri DotNetOpenAuth.OAuth2.IConsumerDescription.Callback { - get { return string.IsNullOrEmpty(this.Callback) ? null : new Uri(this.Callback); } - } - #endregion } }
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/OAuthPrincipalAuthorizationPolicy.cs b/samples/OAuthServiceProvider/Code/OAuthPrincipalAuthorizationPolicy.cs index a25f4c5..cf14eab 100644 --- a/samples/OAuthServiceProvider/Code/OAuthPrincipalAuthorizationPolicy.cs +++ b/samples/OAuthServiceProvider/Code/OAuthPrincipalAuthorizationPolicy.cs @@ -4,18 +4,18 @@ using System.IdentityModel.Claims; using System.IdentityModel.Policy; using System.Linq; + using System.Security.Principal; using System.Web; - using DotNetOpenAuth.OAuth.ChannelElements; public class OAuthPrincipalAuthorizationPolicy : IAuthorizationPolicy { private readonly Guid uniqueId = Guid.NewGuid(); - private readonly OAuthPrincipal principal; + private readonly IPrincipal principal; /// <summary> /// Initializes a new instance of the <see cref="OAuthPrincipalAuthorizationPolicy"/> class. /// </summary> /// <param name="principal">The principal.</param> - public OAuthPrincipalAuthorizationPolicy(OAuthPrincipal principal) { + public OAuthPrincipalAuthorizationPolicy(IPrincipal principal) { this.principal = principal; } diff --git a/samples/OAuthServiceProvider/Code/OAuthToken.cs b/samples/OAuthServiceProvider/Code/OAuthToken.cs deleted file mode 100644 index 182a3e3..0000000 --- a/samples/OAuthServiceProvider/Code/OAuthToken.cs +++ /dev/null @@ -1,66 +0,0 @@ -//----------------------------------------------------------------------- -// <copyright file="OAuthToken.cs" company="Andrew Arnott"> -// Copyright (c) Andrew Arnott. All rights reserved. -// </copyright> -//----------------------------------------------------------------------- - -namespace OAuthServiceProvider.Code { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - using DotNetOpenAuth.OAuth.ChannelElements; - - public partial class OAuthToken : IServiceProviderRequestToken, IServiceProviderAccessToken { - #region IServiceProviderRequestToken Members - - string IServiceProviderRequestToken.Token { - get { return this.Token; } - } - - string IServiceProviderRequestToken.ConsumerKey { - get { return this.OAuthConsumer.ConsumerKey; } - } - - DateTime IServiceProviderRequestToken.CreatedOn { - get { return this.IssueDate; } - } - - Uri IServiceProviderRequestToken.Callback { - get { return string.IsNullOrEmpty(this.RequestTokenCallback) ? null : new Uri(this.RequestTokenCallback); } - set { this.RequestTokenCallback = value.AbsoluteUri; } - } - - string IServiceProviderRequestToken.VerificationCode { - get { return this.RequestTokenVerifier; } - set { this.RequestTokenVerifier = value; } - } - - Version IServiceProviderRequestToken.ConsumerVersion { - get { return new Version(this.ConsumerVersion); } - set { this.ConsumerVersion = value.ToString(); } - } - - #endregion - - #region IServiceProviderAccessToken Members - - string IServiceProviderAccessToken.Token { - get { return this.Token; } - } - - DateTime? IServiceProviderAccessToken.ExpirationDate { - get { return null; } - } - - string IServiceProviderAccessToken.Username { - get { return this.User.OpenIDClaimedIdentifier; } - } - - string[] IServiceProviderAccessToken.Roles { - get { return this.Scope.Split('|'); } - } - - #endregion - } -}
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/RequestScopedTokenMessage.cs b/samples/OAuthServiceProvider/Code/RequestScopedTokenMessage.cs deleted file mode 100644 index 984d683..0000000 --- a/samples/OAuthServiceProvider/Code/RequestScopedTokenMessage.cs +++ /dev/null @@ -1,25 +0,0 @@ -namespace OAuthServiceProvider.Code { - using System; - using DotNetOpenAuth.Messaging; - using DotNetOpenAuth.OAuth.Messages; - - /// <summary> - /// A custom web app version of the message sent to request an unauthorized token. - /// </summary> - public class RequestScopedTokenMessage : UnauthorizedTokenRequest { - /// <summary> - /// Initializes a new instance of the <see cref="RequestScopedTokenMessage"/> class. - /// </summary> - /// <param name="endpoint">The endpoint that will receive the message.</param> - /// <param name="version">The OAuth version.</param> - public RequestScopedTokenMessage(MessageReceivingEndpoint endpoint, Version version) - : base(endpoint, version) { - } - - /// <summary> - /// Gets or sets the scope of the access being requested. - /// </summary> - [MessagePart("scope", IsRequired = true)] - public string Scope { get; set; } - } -}
\ No newline at end of file diff --git a/samples/OAuthServiceProvider/Code/TokenAuthorizationState.cs b/samples/OAuthServiceProvider/Code/TokenAuthorizationState.cs deleted file mode 100644 index a9cfa4e..0000000 --- a/samples/OAuthServiceProvider/Code/TokenAuthorizationState.cs +++ /dev/null @@ -1,26 +0,0 @@ -namespace OAuthServiceProvider.Code { - using System; - using System.Collections.Generic; - using System.Linq; - using System.Web; - - /// <summary> - /// Various states an OAuth token can be in. - /// </summary> - public enum TokenAuthorizationState : int { - /// <summary> - /// An unauthorized request token. - /// </summary> - UnauthorizedRequestToken = 0, - - /// <summary> - /// An authorized request token. - /// </summary> - AuthorizedRequestToken = 1, - - /// <summary> - /// An authorized access token. - /// </summary> - AccessToken = 2, - } -}
\ No newline at end of file |