authenticate-oauth-1.6: Library to authenticate with OAuth for Haskell web applications.

Safe HaskellNone
LanguageHaskell98

Web.Authenticate.OAuth

Contents

Synopsis

Data types

data OAuth #

Data type for OAuth client (consumer).

The constructor for this data type is not exposed. Instead, you should use the def method or newOAuth function to retrieve a default instance, and then use the records below to make modifications. This approach allows us to add configuration options without breaking backwards compatibility.

Instances

Eq OAuth # 

Methods

(==) :: OAuth -> OAuth -> Bool #

(/=) :: OAuth -> OAuth -> Bool #

Data OAuth # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OAuth -> c OAuth #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OAuth #

toConstr :: OAuth -> Constr #

dataTypeOf :: OAuth -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c OAuth) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OAuth) #

gmapT :: (forall b. Data b => b -> b) -> OAuth -> OAuth #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OAuth -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OAuth -> r #

gmapQ :: (forall d. Data d => d -> u) -> OAuth -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> OAuth -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> OAuth -> m OAuth #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OAuth -> m OAuth #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OAuth -> m OAuth #

Read OAuth # 
Show OAuth # 

Methods

showsPrec :: Int -> OAuth -> ShowS #

show :: OAuth -> String #

showList :: [OAuth] -> ShowS #

Default OAuth # 

Methods

def :: OAuth #

def :: Default a => a #

The default value for this type.

newOAuth :: OAuth #

Default value for OAuth datatype. You must specify at least oauthServerName, URIs and Tokens.

oauthServerName :: OAuth -> String #

Service name (default: "")

oauthRequestUri :: OAuth -> String #

URI to request temporary credential (default: ""). You MUST specify if you use getTemporaryCredential', getTemporaryCredentialProxy or getTemporaryCredential; otherwise you can just leave this empty.

oauthAccessTokenUri :: OAuth -> String #

Uri to obtain access token (default: ""). You MUST specify if you use getAcessToken or getAccessToken' or getAccessTokenWith; otherwise you can just leave this empty.

oauthAuthorizeUri :: OAuth -> String #

Uri to authorize (default: ""). You MUST specify if you use authorizeUrl or authorizeZUrl'; otherwise you can just leave this empty.

oauthSignatureMethod :: OAuth -> SignMethod #

Signature Method (default: HMACSHA1)

oauthConsumerKey :: OAuth -> ByteString #

Consumer key (You MUST specify)

oauthConsumerSecret :: OAuth -> ByteString #

Consumer Secret (You MUST specify)

oauthCallback :: OAuth -> Maybe ByteString #

Callback uri to redirect after authentication (default: Nothing)

oauthRealm :: OAuth -> Maybe ByteString #

Optional authorization realm (default: Nothing)

oauthVersion :: OAuth -> OAuthVersion #

OAuth spec version (default: OAuth10a)

data OAuthVersion #

Constructors

OAuth10

OAuth protocol ver 1.0 (no oauth_verifier; differs from RFC 5849).

OAuth10a

OAuth protocol ver 1.0a. This corresponds to community's 1.0a spec and RFC 5849.

Instances

Enum OAuthVersion # 
Eq OAuthVersion # 
Data OAuthVersion # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OAuthVersion -> c OAuthVersion #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OAuthVersion #

toConstr :: OAuthVersion -> Constr #

dataTypeOf :: OAuthVersion -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c OAuthVersion) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OAuthVersion) #

gmapT :: (forall b. Data b => b -> b) -> OAuthVersion -> OAuthVersion #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OAuthVersion -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OAuthVersion -> r #

gmapQ :: (forall d. Data d => d -> u) -> OAuthVersion -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> OAuthVersion -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> OAuthVersion -> m OAuthVersion #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OAuthVersion -> m OAuthVersion #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OAuthVersion -> m OAuthVersion #

Ord OAuthVersion # 
Read OAuthVersion # 
Show OAuthVersion # 

data SignMethod #

Data type for signature method.

Instances

Eq SignMethod # 
Data SignMethod # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SignMethod -> c SignMethod #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SignMethod #

toConstr :: SignMethod -> Constr #

dataTypeOf :: SignMethod -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c SignMethod) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SignMethod) #

gmapT :: (forall b. Data b => b -> b) -> SignMethod -> SignMethod #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SignMethod -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SignMethod -> r #

gmapQ :: (forall d. Data d => d -> u) -> SignMethod -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> SignMethod -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> SignMethod -> m SignMethod #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SignMethod -> m SignMethod #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SignMethod -> m SignMethod #

Read SignMethod # 
Show SignMethod # 

newtype Credential #

Data type for redential.

Constructors

Credential 

Instances

Eq Credential # 
Data Credential # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Credential -> c Credential #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Credential #

toConstr :: Credential -> Constr #

dataTypeOf :: Credential -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Credential) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Credential) #

gmapT :: (forall b. Data b => b -> b) -> Credential -> Credential #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Credential -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Credential -> r #

gmapQ :: (forall d. Data d => d -> u) -> Credential -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Credential -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Credential -> m Credential #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Credential -> m Credential #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Credential -> m Credential #

Ord Credential # 
Read Credential # 
Show Credential # 

newtype OAuthException #

Constructors

OAuthException String 

Instances

Eq OAuthException # 
Data OAuthException # 

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> OAuthException -> c OAuthException #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c OAuthException #

toConstr :: OAuthException -> Constr #

dataTypeOf :: OAuthException -> DataType #

dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c OAuthException) #

dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c OAuthException) #

gmapT :: (forall b. Data b => b -> b) -> OAuthException -> OAuthException #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> OAuthException -> r #

gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> OAuthException -> r #

gmapQ :: (forall d. Data d => d -> u) -> OAuthException -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> OAuthException -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> OAuthException -> m OAuthException #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> OAuthException -> m OAuthException #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> OAuthException -> m OAuthException #

Show OAuthException # 
Exception OAuthException # 

Access token request

data AccessTokenRequest #

Data type for getAccessTokenWith method.

You can create values of this type using defaultAccessTokenRequest.

Since 1.5.1

defaultAccessTokenRequest :: OAuth -> Credential -> Manager -> AccessTokenRequest #

Create a value of type AccessTokenRequest with default values filled in.

Note that this is a settings type. More information on usage can be found at: http://www.yesodweb.com/book/settings-types.

Since 1.5.1

accessTokenAddAuth :: AccessTokenRequest -> ByteString -> Credential -> Request -> Request #

add auth hook.

Default: addAuthHeader

Since 1.5.1

accessTokenRequestHook :: AccessTokenRequest -> Request -> Request #

Request Hook.

Default: id

Since 1.5.1

accessTokenOAuth :: AccessTokenRequest -> OAuth #

OAuth Application

Since 1.5.1

accessTokenTemporaryCredential :: AccessTokenRequest -> Credential #

Temporary Credential (with oauth_verifier if >= 1.0a)

Since 1.5.1

Operations for credentials

newCredential #

Arguments

:: ByteString

value for oauth_token

-> ByteString

value for oauth_token_secret

-> Credential 

Convenient function to create Credential with OAuth Token and Token Secret.

emptyCredential :: Credential #

Empty credential.

insert #

Arguments

:: ByteString

Parameter Name

-> ByteString

Value

-> Credential

Credential

-> Credential

Result

Insert an oauth parameter into given Credential.

delete #

Arguments

:: ByteString

Parameter name

-> Credential

Credential

-> Credential

Result

Remove an oauth parameter for key from given Credential.

inserts :: [(ByteString, ByteString)] -> Credential -> Credential #

Convenient method for inserting multiple parameters into credential.

injectVerifier :: ByteString -> Credential -> Credential #

Insert oauth-verifier on a Credential.

Signature

signOAuth #

Arguments

:: MonadIO m 
=> OAuth

OAuth Application

-> Credential

Credential

-> Request

Original Request

-> m Request

Signed OAuth Request

Add OAuth headers & sign to Request.

genSign :: MonadIO m => OAuth -> Credential -> Request -> m ByteString #

Generate OAuth signature. Used by signOAuth.

checkOAuth :: MonadIO m => OAuth -> Credential -> Request -> ExceptT OAuthException m Request #

Test existing OAuth signature. Since 1.5.2

Url & operation for authentication

Temporary credentials

getTemporaryCredential #

Arguments

:: MonadIO m 
=> OAuth

OAuth Application

-> Manager 
-> m Credential

Temporary Credential (Request Token & Secret).

Get temporary credential for requesting acces token.

getTemporaryCredentialWithScope #

Arguments

:: MonadIO m 
=> ByteString

Scope parameter string

-> OAuth

OAuth Application

-> Manager 
-> m Credential

Temporay Credential (Request Token & Secret).

Get temporary credential for requesting access token with Scope parameter.

getTemporaryCredentialProxy #

Arguments

:: MonadIO m 
=> Maybe Proxy

Proxy

-> OAuth

OAuth Application

-> Manager 
-> m Credential

Temporary Credential (Request Token & Secret).

Get temporary credential for requesting access token via the proxy.

getTemporaryCredential' #

Arguments

:: MonadIO m 
=> (Request -> Request)

Request Hook

-> OAuth

OAuth Application

-> Manager 
-> m Credential

Temporary Credential (Request Token & Secret).

Authorization URL

authorizeUrl #

Arguments

:: OAuth

OAuth Application

-> Credential

Temporary Credential (Request Token & Secret)

-> String

URL to authorize

URL to obtain OAuth verifier.

authorizeUrl' #

Arguments

:: (OAuth -> Credential -> SimpleQuery) 
-> OAuth

OAuth Application

-> Credential

Temporary Credential (Request Token & Secret)

-> String

URL to authorize

Convert OAuth and Credential to URL to authorize. This takes function to choice parameter to pass to the server other than oauth_callback or oauth_token.

Attaching auth to requests

addAuthBody :: a -> Credential -> Request -> Request #

Place the authentication information in a URL encoded body instead of the Authorization header.

Note that the first parameter is used for realm in addAuthHeader, and this function needs the same type. The parameter, however, is unused.

Since 1.5.1

Finishing authentication

getAccessToken #

Arguments

:: MonadIO m 
=> OAuth

OAuth Application

-> Credential

Temporary Credential (with oauth_verifier if >= 1.0a)

-> Manager 
-> m Credential

Token Credential (Access Token & Secret)

Get Access token.

getAccessTokenProxy #

Arguments

:: MonadIO m 
=> Maybe Proxy

Proxy

-> OAuth

OAuth Application

-> Credential

Temporary Credential (with oauth_verifier if >= 1.0a)

-> Manager 
-> m Credential

Token Credential (Access Token & Secret)

Get Access token via the proxy.

getTokenCredential #

Arguments

:: MonadIO m 
=> OAuth

OAuth Application

-> Credential

Temporary Credential (with oauth_verifier if >= 1.0a)

-> Manager 
-> m Credential

Token Credential (Access Token & Secret)

Get Access token.

getTokenCredentialProxy #

Arguments

:: MonadIO m 
=> Maybe Proxy

Proxy

-> OAuth

OAuth Application

-> Credential

Temporary Credential (with oauth_verifier if >= 1.0a)

-> Manager 
-> m Credential

Token Credential (Access Token & Secret)

Get Access token via the proxy.

getAccessToken' #

Arguments

:: MonadIO m 
=> (Request -> Request)

Request Hook

-> OAuth

OAuth Application

-> Credential

Temporary Credential (with oauth_verifier if >= 1.0a)

-> Manager 
-> m Credential

Token Credential (Access Token & Secret)

getAccessTokenWith #

Arguments

:: MonadIO m 
=> AccessTokenRequest

extensible parameters

-> m (Either (Response ByteString) Credential)

Token Credential (Access Token & Secret) or the conduit response on failures

Utility Methods

paramEncode :: ByteString -> ByteString #

Encode a string using the percent encoding method for OAuth.