LinqToDB如何将AccessToken添加到数据库连接
LinqToDB How to add AccessToken to database connection
我需要使用 ServicePrincipal
对使用 LinqToDB
的 SQL 服务器进行身份验证。我按照 this microsoft article 来测试设置是否正确。但是,此示例使用具有 AccessToken
属性 的 System.Data.Sqlclient.SqlConnection
class,因此它可以将 AccessToken
添加到连接中。
using (var conn = new SqlConnection(sqlConnectionString))
{
conn.AccessToken = authenticationResult.AccessToken;
// ...
}
我正在使用 LinqToDB
并试图弄清楚在哪里可以添加从 AD
获得的 AccessToken
。 DataConnection
(source) 没有 AccessToken
属性。
如果有人感兴趣,这里是解决方案。
创建连接工厂class,在连接对象中添加访问令牌,如下所示:
public IDbConnection MyConnectionFactory()
{
ClientCredential clientCredential = new ClientCredential(ClientId,ClientSecret);
AuthenticationContext authenticationContext = new AuthenticationContext(AuthorityUrl);
AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync(TargetUrl, clientCredential).Result;
SqlConnection MyDataConnection = new SqlConnection(ConnectionString);
MyDataConnection.AccessToken = authenticationResult.AccessToken;
return MyDataConnection;
}
为您的数据库创建数据提供程序:
IDataProvider MyDataProvider = new SqlServerDataProvider("SqlServer", SqlServerVersion.v2008);
将这些传递到 DataConnection
的构造函数中
using (var db = new DataConnection(MyDataProvider, MyConnectionFactory))
我需要使用 ServicePrincipal
对使用 LinqToDB
的 SQL 服务器进行身份验证。我按照 this microsoft article 来测试设置是否正确。但是,此示例使用具有 AccessToken
属性 的 System.Data.Sqlclient.SqlConnection
class,因此它可以将 AccessToken
添加到连接中。
using (var conn = new SqlConnection(sqlConnectionString))
{
conn.AccessToken = authenticationResult.AccessToken;
// ...
}
我正在使用 LinqToDB
并试图弄清楚在哪里可以添加从 AD
获得的 AccessToken
。 DataConnection
(source) 没有 AccessToken
属性。
如果有人感兴趣,这里是解决方案。
创建连接工厂class,在连接对象中添加访问令牌,如下所示:
public IDbConnection MyConnectionFactory() { ClientCredential clientCredential = new ClientCredential(ClientId,ClientSecret); AuthenticationContext authenticationContext = new AuthenticationContext(AuthorityUrl); AuthenticationResult authenticationResult = authenticationContext.AcquireTokenAsync(TargetUrl, clientCredential).Result; SqlConnection MyDataConnection = new SqlConnection(ConnectionString); MyDataConnection.AccessToken = authenticationResult.AccessToken; return MyDataConnection; }
为您的数据库创建数据提供程序:
IDataProvider MyDataProvider = new SqlServerDataProvider("SqlServer", SqlServerVersion.v2008);
将这些传递到 DataConnection
的构造函数中
using (var db = new DataConnection(MyDataProvider, MyConnectionFactory))