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

Safe HaskellNone

Web.Authenticate.OAuth

Contents

Synopsis

Data types

data OAuth Source

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.

def :: Default a => a

The default value for this type.

newOAuth :: OAuthSource

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

oauthServerName :: OAuth -> StringSource

Service name (default: "")

oauthRequestUri :: OAuth -> StringSource

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 -> StringSource

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

oauthAuthorizeUri :: OAuth -> StringSource

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

oauthSignatureMethod :: OAuth -> SignMethodSource

Signature Method (default: HMACSHA1)

oauthConsumerKey :: OAuth -> ByteStringSource

Consumer key (You MUST specify)

oauthConsumerSecret :: OAuth -> ByteStringSource

Consumer Secret (You MUST specify)

oauthCallback :: OAuth -> Maybe ByteStringSource

Callback uri to redirect after authentication (default: Nothing)

oauthRealm :: OAuth -> Maybe ByteStringSource

Optional authorization realm (default: Nothing)

oauthVersion :: OAuth -> OAuthVersionSource

OAuth spec version (default: OAuth10a)

data OAuthVersion Source

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.

Operations for credentials

newCredentialSource

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 :: CredentialSource

Empty credential.

insertSource

Arguments

:: ByteString

Parameter Name

-> ByteString

Value

-> Credential

Credential

-> Credential

Result

Insert an oauth parameter into given Credential.

deleteSource

Arguments

:: ByteString

Parameter name

-> Credential

Credential

-> Credential

Result

Remove an oauth parameter for key from given Credential.

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

Convenient method for inserting multiple parameters into credential.

injectVerifier :: ByteString -> Credential -> CredentialSource

Insert oauth-verifier on a Credential.

Signature

signOAuthSource

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 ByteStringSource

Generate OAuth signature. Used by signOAuth.

Url & operation for authentication

Temporary credentials

getTemporaryCredentialSource

Arguments

:: MonadIO m 
=> OAuth

OAuth Application

-> Manager 
-> m Credential

Temporary Credential (Request Token & Secret).

Get temporary credential for requesting acces token.

getTemporaryCredentialWithScopeSource

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.

getTemporaryCredentialProxySource

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'Source

Arguments

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

Request Hook

-> OAuth

OAuth Application

-> Manager 
-> m Credential

Temporary Credential (Request Token & Secret).

Authorization URL

authorizeUrlSource

Arguments

:: OAuth

OAuth Application

-> Credential

Temporary Credential (Request Token & Secret)

-> String

URL to authorize

URL to obtain OAuth verifier.

authorizeUrl'Source

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.

Finishing authentication

getAccessTokenSource

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.

getAccessTokenProxySource

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.

getTokenCredentialSource

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.

getTokenCredentialProxySource

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'Source

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)

Utility Methods

paramEncode :: ByteString -> ByteStringSource

Encode a string using the percent encoding method for OAuth.