OWIN с VB. NET Устаревший код ASP. NET Веб-формы - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь внедрить OWIN в наш устаревший vb. net проект веб-форм, мы должны работать с нашей реализацией SSO на Azure. Однако при запуске я не могу запустить класс startup.vb. Я добавил:

   <add key="owin:AppStartup" value="StartUp" />
   <add key="owin:AutomaticAppStartup" value="true " />

Но я все еще не могу запустить реализованный мной класс StartUp. Я ожидаю, что меня перенаправят на нашу систему единого входа от Microsoft, однако этого не происходит. На inte rnet не так много возможностей для использования OWIN с VB. NET также.

Imports Owin



Partial Public Class Startup
    Public Sub Configuration(ByVal app As IAppBuilder)
        ConfigureAuth(app)

    End Sub
End Class

Imports Microsoft.Owin.Extensions
Imports Microsoft.Owin.Security
Imports Microsoft.Owin.Security.Cookies
Imports Microsoft.Owin.Security.OpenIdConnect
Imports Owin
Imports System
Imports System.Configuration
Imports System.Linq
Imports System.Security.Claims
Imports System.Threading.Tasks

Partial Public Class Startup
    Private Shared clientId As String = ConfigurationManager.AppSettings("ida:ClientId")
    Private Shared aadInstance As String = EnsureTrailingSlash(ConfigurationManager.AppSettings("ida:AADInstance"))
    Private Shared tenantId As String = ConfigurationManager.AppSettings("ida:TenantId")
    Private Shared postLogoutRedirectUri As String = ConfigurationManager.AppSettings("ida:PostLogoutRedirectUri")
    Private authority As String = aadInstance & tenantId

    Public Sub ConfigureAuth(ByVal app As IAppBuilder)

        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)
        app.UseCookieAuthentication(New CookieAuthenticationOptions())
        app.UseOpenIdConnectAuthentication(New OpenIdConnectAuthenticationOptions With {
            .clientId = clientId,
            .authority = authority,
            .postLogoutRedirectUri = postLogoutRedirectUri,
            .Notifications = New OpenIdConnectAuthenticationNotifications() With {
                .AuthenticationFailed = Function(context) System.Threading.Tasks.Task.FromResult(0),
                .SecurityTokenValidated = Function(context)
                                              Dim claims = context.AuthenticationTicket.Identity.Claims
                                              Dim groups = From c In claims Where c.Type = "groups" Select c

                                              For Each group In groups
                                                  context.AuthenticationTicket.Identity.AddClaim(New Claim(ClaimTypes.Role, group.Value))
                                              Next

                                              Return Task.FromResult(0)
                                          End Function
            }
        })
        app.UseStageMarker(PipelineStage.Authenticate)
    End Sub

    Private Shared Function EnsureTrailingSlash(ByVal value As String) As String
        If value Is Nothing Then
            value = String.Empty
        End If

        If Not value.EndsWith("/", StringComparison.Ordinal) Then
            Return value & "/"
        End If

        Return value
    End Function
End Class

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...