IdentityServer.External.TokenExchange
1.0.0
See the version list below for details.
dotnet add package IdentityServer.External.TokenExchange --version 1.0.0
NuGet\Install-Package IdentityServer.External.TokenExchange -Version 1.0.0
<PackageReference Include="IdentityServer.External.TokenExchange" Version="1.0.0" />
paket add IdentityServer.External.TokenExchange --version 1.0.0
#r "nuget: IdentityServer.External.TokenExchange, 1.0.0"
// Install IdentityServer.External.TokenExchange as a Cake Addin
#addin nuget:?package=IdentityServer.External.TokenExchange&version=1.0.0
// Install IdentityServer.External.TokenExchange as a Cake Tool
#tool nuget:?package=IdentityServer.External.TokenExchange&version=1.0.0
Exchanging external Tokens (Google, Twitter, Facebook,LinkedIn) with IdentityServer access tokens using an extension grant
Setup
By default the package contains implementations for Google , Facebook , Twitter & LinkedIn and can be configured using the AddDefaultExternalTokenProviders
method.
services.AddIdentityServer()
/** identity server configs **/
.AddDeveloperSigningCredential()
.AddInMemoryClients(IdentityServerConfig.GetClients())
.AddInMemoryIdentityResources(IdentityServerConfig.GetIdentityResources())
.AddInMemoryApiResources(IdentityServerConfig.GetApiResources())
.AddTestUsers(IdentityServerConfig.GetUsers())
/** token exchange configs **/
.AddTokenExchangeForExternalProviders() //registers an extension grant
.AddDefaultTokenExchangeProviderStore() //registers default in-memory store for providers info
.AddDefaultExternalTokenProviders() //registers providers auth implementations
.AddDefaultTokenExchangeProfileService() //registers default profile service
.AddDefaultExternalUserStore(); //registers default in-memory user's store
Usage
- Request authentication using the provider's native library.
- Exchange external token with IdentityServer token by making following request to IdentityServer.
POST connect/token
client_id = [your_client_id]
client_secret = [your_client_secret]
scopes = [your_scopes]
grant_type = external
provider = facebook
external_token = [facebook_access_token]
- If user is already registered then IdentityServer will return the access token, otherwise it will send the user's data and prompt for an email parameter to be added, in this case make another request with an extra
email
parameter.
POST connect/token
client_id = [your_client_id]
client_secret = [your_client_secret]
scopes = [your_scopes]
grant_type = external
provider = facebook
email = myemail@abc.com
external_token = [facebook_access_token]
You can change provider
to Facebook
, Google
, Twitter
and LinkedIn
and provide respective token in the external_token
parameter.
Customization
Adding Custom Provider
Step: 1 Provide external authentication provider
Provide an implementation of IExternalTokenProvider
.
This class will be responsible for talking to your external provider for retrieving user's info.
The name of the class must follow the naming convention (Add "AuthProvider" at the end of your your class name) otherwise the DI would be unable to resolve it.
Step: 2 Provide a custom provider store
Add a custom provider store by implementing ITokenExchangeProviderStore
. This class will be
responsible for managing all information abour all the providers i.e. facebook , google and custom providers.
Step: 3
Register your service in Startup.cs
.AddCustomExternalTokenProvider<MyCustomAuthProvider>();
Step: 4
register your custom providers store.
.AddCustomTokenExchangeProviderStore<MyCustomProviderStore>();
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- IdentityServer4 (>= 2.2.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Exchange identityserver tokens with facebook, linkedin , twitter and google tokens.