![]() |
VOOZH | about |
Blazor is a framework for developing modern, client-side web UIs using .NET technology. Instead of coding in JavaScript, developers can use the familiar C# language and .NET libraries to build app UIs.
The CData ADO.NET Provider for PingOne can be used with standard ADO.NET interfaces, such as LINQ and Entity Framework, to interact with live PingOne data. Since Blazor supports .NET Core, developers can use CData ADO.NET Providers in Blazor apps. In this article, we will guide you to build a simple Blazor app that talks to PingOne using standard SQL queries.
CData ADO.NET Providers allow users to access PingOne just like they would access SQL Server, using simple SQL queries.
Install the PingOne ADO.NET Data Provider from the CData website or from NuGet. Search NuGet for "PingOne ADO.NET Data Provider."
๐ Install ADO.NET PingOne Provider from NuGet.Start by creating a Blazor project that references the CData ADO.NET Provider for PingOne
To connect to PingOne, configure these properties:
is the ID of the PingOne environment in which your Worker application resides. This parameter is used only when the environment is using the default PingOne domain (auth.pingone). It is configured after you have created the custom OAuth application you will use to authenticate to PingOne, as described in Creating a Custom OAuth Application in the Help documentation.
First, find the value for this property:
WorkerAppEnvironmentId='11e96fc7-aa4d-4a60-8196-9acf91424eca'
Now set to the value of the Environment ID field.
is the base URL of the PingOne authorization server for the environment where your application is located. This property is only used when you have set up a custom domain for the environment, as described in the PingOne platform API documentation. See Custom Domains.
PingOne supports both OAuth and OAuthClient authentication. In addition to performing the configuration steps described above, there are two more steps to complete to support OAuth or OAuthCliet authentication:
Set to OAuth.
Get and Refresh the OAuth Access Token
After setting the following, you are ready to connect:
When you connect, the driver opens PingOne's OAuth endpoint in your default browser. Log in and grant permissions to the application. The driver then completes the OAuth process:
The driver refreshes the access token automatically when it expires.
For other OAuth methods, including Web Applications, Headless Machines, or Client Credentials Grant, refer to the Help documentation.
For example: AuthScheme=OAuth;WorkerAppEnvironmentId=eebc33a8-xxxx-4f3a-yyyy-d3e5262fd49e;Region=NA;OAuthClientId=client_id;OAuthClientSecret=client_secret;InitiateOAuth=GETANDREFRESH;
@page "/"
@using System.Data;
@using System.Data.CData.PingOne;
<h1>Hello, world!</h1>
Welcome to your Data app.
<div class="row">
<div class="col-12">
@using (PingOneConnection connection = new PingOneConnection(
"AuthScheme=OAuth;WorkerAppEnvironmentId=eebc33a8-xxxx-4f3a-yyyy-d3e5262fd49e;Region=NA;OAuthClientId=client_id;OAuthClientSecret=client_secret;InitiateOAuth=GETANDREFRESH;"))
{
var sql = "SELECT Id, Username FROM [CData].[Administrators].Users WHERE EmployeeType = 'Contractor'";
var results = new DataTable();
PingOneDataAdapter dataAdapter = new PingOneDataAdapter(sql, connection);
dataAdapter.Fill(results);
<table class="table table-bordered">
<thead class="thead-light">
<tr>
@foreach (DataColumn item in results.Rows[0].Table.Columns)
{
<th scope="col">@item.ColumnName</th>
}
</tr>
</thead>
<tbody>
@foreach (DataRow row in results.Rows)
{
<tr>
@foreach (var column in row.ItemArray)
{
<td>@column.ToString()</td>
}
</tr>
}
</tbody>
</table>
}
</div>
</div>
At this point, you have a PingOne-connected Blazor app, capable of working with live PingOne data just like you would work with a SQL Server instance. Download a free, 30-day trial and start working with live PingOne data in your Blazor apps today.
Download a free trial of the PingOne Data Provider to get started:
Download NowLearn more:
๐ PingOne IconRapidly create and deploy powerful .NET applications that integrate with PingOne.