IBeam.Identity.Services
2.0.56
See the version list below for details.
dotnet add package IBeam.Identity.Services --version 2.0.56
NuGet\Install-Package IBeam.Identity.Services -Version 2.0.56
<PackageReference Include="IBeam.Identity.Services" Version="2.0.56" />
<PackageVersion Include="IBeam.Identity.Services" Version="2.0.56" />
<PackageReference Include="IBeam.Identity.Services" />
paket add IBeam.Identity.Services --version 2.0.56
#r "nuget: IBeam.Identity.Services, 2.0.56"
#:package IBeam.Identity.Services@2.0.56
#addin nuget:?package=IBeam.Identity.Services&version=2.0.56
#tool nuget:?package=IBeam.Identity.Services&version=2.0.56
IBeam.Identity.Services
Core identity orchestration package for OTP, password, OAuth, tokens, and tenant selection.
Narrative Introduction
This package is where identity behavior is implemented. It consumes contracts from IBeam.Identity and composes authentication workflows while delegating storage and delivery concerns to repository and communications providers.
Features and Components
- auth flow implementations:
PasswordAuthServiceOtpAuthServiceOAuthAuthService
- supporting services:
OtpServiceJwtTokenServiceTenantSelectionServiceIdentityCommunicationAdapterPermissionAccessAuthorizer(dynamic permission map authorization)PermissionCatalogProvider(exposed permission catalog discovery)
- DI extension methods:
AddIBeamIdentityServices(IConfiguration)AddIBeamIdentityPermissionMappings(...)AddIBeamIdentityPermissionCatalog(...)AddIBeamIdentityAuthPasswordService()AddIBeamIdentityAuthOtpService()AddIBeamIdentityAuthOAuthService()AddIBeamAuthEvents(...)
Cross-Pattern Auth Orchestration
IBeam.Identity.Services lets one user move between auth patterns without creating duplicate users. The service layer always works against UserId after the repository resolves an auth identifier.
Supported flows:
- OTP with SMS:
StartOtpAsync(phone)thenCompleteOtpAsync(...). - OTP with email:
StartOtpAsync(email)thenCompleteOtpAsync(...). - Email/password:
StartEmailPasswordRegistrationAsync(...),CompleteEmailPasswordRegistrationAsync(...), thenPasswordLoginAsync(...). - Add email/password to an existing SMS user:
StartEmailPasswordLinkAsync(...), thenCompleteEmailPasswordLinkAsync(...). - Add SMS to an existing email user:
StartPhoneLinkAsync(...), thenCompletePhoneLinkAsync(...). - 2FA:
StartTwoFactorSetupAsync(...),CompleteTwoFactorSetupAsync(...), thenCompleteTwoFactorLoginAsync(...).
The repository provider is responsible for fast identifier resolution. For Azure Table, this is done by an AuthIdentifiers table keyed by identifier type and normalized value.
Dependencies
- Internal packages:
IBeam.IdentityIBeam.Communications
- External packages:
Microsoft.Extensions.Configuration.AbstractionsMicrosoft.Extensions.Caching.AbstractionsMicrosoft.Extensions.HttpMicrosoft.Extensions.OptionsMicrosoft.Extensions.Options.ConfigurationExtensionsMicrosoft.Extensions.Identity.StoresSystem.IdentityModel.Tokens.Jwt
Required Configuration
IBeam:Identity:JwtIBeam:Identity:OtpIBeam:Identity:FeaturesIBeam:Identity:OAuth(when OAuth is enabled)IBeam:Identity:Events(optional)IBeam:Identity:PermissionAccess(optional; JSON permission map source)IBeam:Identity:RoleManagement(optional; tenant/admin policy toggles)
OTP Auto-Provision Toggle
IBeam:Identity:Otp:AllowAutoProvisionForUnknownUsertrue: OTP sign-in may create users for unknown destinationsfalse: unknown destinations are blocked in OTP start/complete flows
- Default when omitted:
Development:trueTest/Production:false
- Environment-variable override:
IBeam__Identity__Otp__AllowAutoProvisionForUnknownUser=true|false
Code Samples
SMS OTP first, email/password later
var otp = await otpAuth.StartOtpAsync("16145551212", ct: ct);
var signedIn = await otpAuth.CompleteOtpAsync(
otp.ChallengeId,
codeFromSms,
"16145551212",
displayName: "Adam",
ct);
var userIdClaim = signedIn.Token!.Claims.First(c => c.Type == "uid").Value;
Guid userId = Guid.Parse(userIdClaim);
await passwordAuth.StartEmailPasswordLinkAsync(
userId,
"adam@test.com",
resetUrlBase: "https://app.example.com/finish-email-link",
ct: ct);
await passwordAuth.CompleteEmailPasswordLinkAsync(
userId,
"adam@test.com",
challengeId,
verificationToken,
"new secure password",
ct);
Email user adds SMS
var challenge = await passwordAuth.StartPhoneLinkAsync(userId, "16145551212", ct);
await passwordAuth.CompletePhoneLinkAsync(
userId,
"16145551212",
challenge.ChallengeId,
codeFromSms,
ct);
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- IBeam.Communications (>= 2.0.56)
- IBeam.Identity (>= 2.0.56)
- Microsoft.Extensions.Caching.Abstractions (>= 10.0.3)
- Microsoft.Extensions.Configuration.Abstractions (>= 10.0.3)
- Microsoft.Extensions.Http (>= 10.0.0)
- Microsoft.Extensions.Identity.Stores (>= 8.0.19)
- Microsoft.Extensions.Options (>= 10.0.3)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 10.0.3)
- System.IdentityModel.Tokens.Jwt (>= 8.16.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on IBeam.Identity.Services:
| Package | Downloads |
|---|---|
|
IBeam.Identity.Repositories.AzureTable
IBeam modular framework components for .NET APIs and services. |
|
|
IBeam.Identity.Api
IBeam modular framework components for .NET APIs and services. |
|
|
IBeam.Identity.Repositories.EntityFramework
IBeam modular framework components for .NET APIs and services. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.4.0 | 133 | 6/24/2026 |
| 2.3.0 | 132 | 6/24/2026 |
| 2.2.0 | 132 | 6/23/2026 |
| 2.1.0 | 145 | 6/23/2026 |
| 2.0.68 | 132 | 6/23/2026 |
| 2.0.66 | 130 | 6/22/2026 |
| 2.0.65 | 136 | 6/22/2026 |
| 2.0.64 | 191 | 6/17/2026 |
| 2.0.63 | 141 | 6/16/2026 |
| 2.0.62 | 135 | 6/16/2026 |
| 2.0.57 | 205 | 6/8/2026 |
| 2.0.56 | 145 | 6/7/2026 |
| 2.0.54 | 248 | 5/27/2026 |
| 2.0.52 | 141 | 5/27/2026 |
| 2.0.35 | 167 | 5/15/2026 |
| 2.0.32 | 284 | 3/25/2026 |
| 2.0.30 | 131 | 3/25/2026 |
| 2.0.29 | 129 | 3/25/2026 |
| 2.0.28 | 119 | 3/25/2026 |
| 2.0.26 | 126 | 3/25/2026 |