Azure openid-connect не может получить значение типа ответа - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь запустить процесс.

  1. войти на портал A с аутентификацией Azure.
  2. Внутри портала есть ссылка на систему навигации "A .

Возможно ли это сделать? как я пытался с помощью следующего метода, но я сталкиваюсь с ошибкой в ​​коде ниже, который является нулевым значением в «коде»

Dim AR As AuthenticationResult = AC.AcquireTokenByAuthorizationCodeAsync(code, New Uri(redirectUri), cc).Result

Благодарю за помощь.

Запуск. vb

Public Shared clientId As String = ConfigurationManager.AppSettings("ida:ClientId")
    Private Shared appKey As String = ConfigurationManager.AppSettings("ida:ClientSecret")
    Public Shared aadInstance As String = ConfigurationManager.AppSettings("ida:AADInstance")
    Private Shared redirectUri As String = ConfigurationManager.AppSettings("ida:RedirectUri")

    Public Sub ConfigureAuth(ByVal app As IAppBuilder)
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)
        app.UseCookieAuthentication(New CookieAuthenticationOptions())
        app.UseOAuth2CodeRedeemer(New OAuth2CodeRedeemerOptions With {
            .ClientId = clientId,
            .ClientSecret = appKey,
            .RedirectUri = redirectUri
        })
        app.UseOpenIdConnectAuthentication(New OpenIdConnectAuthenticationOptions With {
            .ClientId = clientId,
            .Authority = String.Format(CultureInfo.InvariantCulture, aadInstance, "common", "/v2.0"),
            .RedirectUri = redirectUri,
            .Scope = "openid profile offline_access Mail.Read",
            .PostLogoutRedirectUri = redirectUri,
            .ResponseType = "code",
            .TokenValidationParameters = New TokenValidationParameters With {
                .ValidateIssuer = False
            },
            .Notifications = New OpenIdConnectAuthenticationNotifications With {
                .AuthorizationCodeReceived = AddressOf OnAuthorization,
                .AuthenticationFailed = AddressOf OnAuthenticationFailed
            }
        })

    End Sub

Logon.aspx.vb (который зарегистрирован в URI перенаправления azure)

 Private Shared clientId1 As String = ConfigurationManager.AppSettings("ida:ClientId")
Private Shared appKey As String = ConfigurationManager.AppSettings("ida:ClientSecret")
Public Shared aadInstance As String = ConfigurationManager.AppSettings("ida:AADInstance")
Private Shared redirectUri As String = ConfigurationManager.AppSettings("ida:RedirectUri")

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Try


        Dim redirectUri As String = SF.Config.GetRedirectLink()
        Dim authorityUri As String = String.Format(CultureInfo.InvariantCulture, aadInstance, "common", "/v2.0") 'aadInstance
        Dim code As String = Request.Params("code")



        If code IsNot Nothing Then

            Dim TC As TokenCache = New TokenCache()
            Dim AC As AuthenticationContext = New AuthenticationContext(authorityUri, TC)
            Dim cc As ClientCredential = New ClientCredential(clientId1, appKey)
            Dim AR As AuthenticationResult = AC.AcquireTokenByAuthorizationCodeAsync(code, New Uri(redirectUri), cc).Result

            Session("ThrAzureLogin") = True
            Session("authResult") = AR
            Response.Redirect("Redirect.aspx")

        Else
            Session("ThrAzureLogin") = True
            Session("authResult") = Nothing
            Response.Redirect("Login.aspx")
        End If
    Catch ex As Exception
        Throw
    End Try

End Sub
...