在VB.NET中使用IdentityModel进行OpenID Connect身份验证

时间:2020-06-08 15:34:31

标签: vb.net openid-connect identitymodel

我正在使用Visual Studio 2019在VB.NET 4.7.2中创建应用程序。 用户必须使用OpenID Connect进行身份验证。

我已经使用NuGet软件包管理器下载了IdentityModel软件包,并尝试对身份验证方法进行编码。

第一步之前:导入库

Imports System.Net
Imports IdentityModel.Client
Imports System.Threading.Tasks

第一步:令牌请求数据

Function Get_Token As String()

Dim request As TokenRequest = New TokenRequest
request.Address = "https://demo.identityserver.io/connect/token"
request.GrantType = "custom"
request.ClientId = "ClientID"
request.Parameters.Add("parameter1", "value1")
request.Parameters.Add("parameter2", "value2") 

第二步:为令牌请求调用异步函数。我必须使用异步函数,因为函数RequestTokenAsync的响应具有Task(Of TokenResponse)作为类型。我的问题在这里: 这是正确的方法吗?我怎么称呼异步。函数,以便可以在调用函数中评估返回变量 response

Call AsyncCall(request)

异步函数:不起作用,并给出错误NullReferenceException

Async Function AsyncCall(rqst As TokenRequest) As Task(Of TokenResponse)
Dim client As Http.HttpClient = New Http.HttpClient()
Dim response As TokenResponse = Await client.RequestTokenAsync(rqst)
Return response
End Function

异步函数将变量 response 返回给函数Get_Token,并对变量进行进一步评估:

第三步:响应的评估 即使异步函数具有“返回响应”以便将变量 response 返回给调用函数,但是调用函数无法识别 response ,我如何返回变量响应正确吗?

Get_Token = response.AccessToken
End Function

您能帮我一下,还是告诉我任何方向?

1 个答案:

答案 0 :(得分:0)

IdentityModel编码模型的更改如下:

  • 不使用TokenClient-改用HttpClient
  • 使用RequestTokenAsync扩展方法->您已经在做
  • 也使用TokenRequest对象->您已经在做

这里是expected usage

相关问题