.NET desktop app
Integrate Hanzo IAM in a .NET desktop app with WebView2.
The iam-dotnet-desktop-example shows Hanzo IAM sign-in in a .NET desktop app using WebView2.
Run the example
Prerequisites
- WebView2 Runtime (usually preinstalled on Windows)
Initialization
Set these 5 string parameters:
| Name | Description | File |
|---|---|---|
| Domain | The host/domain of your Hanzo IAM server | Hanzo IAMVariables.cs |
| ClientId | The Client ID of your Hanzo IAM application | Hanzo IAMVariables.cs |
| AppName | The name of your Hanzo IAM application | Hanzo IAMVariables.cs |
| CallbackUrl | The path of the callback URL for your Hanzo IAM application. If not provided, it will be iam://callback | Hanzo IAMVariables.cs |
| ClientSecret | The Client Secret of your Hanzo IAM application | Hanzo IAMVariables.cs |
Defaults: Hanzo IAM demo and app-casnode if not set.
Running
Visual Studio
- Open
iam-dotnet-desktop-example.sln - Press
Ctrl + F5to start
Command line
cd src/DesktopAppdotnet run
Preview

Click Hanzo IAM Login to open the login window. After sign-in, the user profile is shown.

Integration
Open the login window
var login = new Login();
// Triggered when login succeeds, you will receive an auth code in the event handler
login.CodeReceived += Login_CodeReceived;
login.ShowDialog();
### Exchange the auth code for user info
```csharp
public async Task<string?> RequestToken(string clientId, string clientSecret, string code)
{
var body = new
{
grant_type = "authorization_code",
client_id = clientId,
client_secret = clientSecret,
code
};
var req = new RestRequest(_requestTokenUrl).AddJsonBody(body);
var token = await _client.PostAsync<TokenDto>(req);
return token?.AccessToken;
}
public async Task<UserDto?> GetUserInfo(string token)
{
var req = new RestRequest(_getUserInfoUrl).AddQueryParameter("accessToken", token);
return await _client.GetAsync<UserDto>(req);
}
...
var token = await _iamApi.RequestToken(
Hanzo IAMVariables.ClientId,
Hanzo IAMVariables.ClientSecret,
authCode,
);
var user = await _iamApi.GetUserInfo(token);How is this guide?
Last updated on