如何通过OIDC协议将Okta配置为身份服务器的外部IDP?

时间:2018-07-25 22:02:19

标签: openid-connect identityserver3 okta

因此,我目前正在执行与要求IdentityServer3 and external login through OpenIDConnect类似的操作,除了使用okta作为我的外部Idp。 (tl; dr:我有一个本地Identityserver3,它通过openid Connect对外部Okta Idp进行身份验证。

我是OIDC和身份服务器3的新手。我的问题还与在redirectURL中放置的内容有关。请注意,我的本地身份服务器托管在https://localhost:5000/core上,并且在我的启动代码存根中是以下

public static void ConfigureIdentityProviders(IAppBuilder app, string signInAsType){

    var openIDOptions = new OpenIdConnectAuthenticationOptions
    {
        AuthenticationType = "oktaOpenID",
        Authority = "https://***********.okta.com",
        Caption = "Okta Via OpenID",
        ClientId = "<client id>",
        ClientSecret = "<client secret>",
        RedirectUri = "https://localhost:5000/core", 
        ResponseType = "code",
        Scope = "openid email profile",
        SignInAsAuthenticationType = signInAsType
    }
}

问题出在回调上。当我根据OKTA(我的外部OICD IDp)进行身份验证时,它重定向到https://localhost:5000/core,但浏览器会打印

{
    Message: "The requested resource does not support http method 'POST'."
}

我觉得我需要创建一个像https://localhost:5000/core/OIDC这样的端点

它将接受来自okta的post参数代码和状态,然后将代码传递回okta令牌端点,但是我不知道从哪里开始。

有帮助吗?我尝试创建类似于IdentityServer3 and external login through OpenIDConnect中定义的类,但是由于我不知道spacespaceguy的项目中包含哪些库/软件包,因此出现了构建错误。

1 个答案:

答案 0 :(得分:0)

好吧,我知道了。我必须用细齿梳子进行检查 IdentityServer3 and external login through OpenIDConnect

的spatialguy解决方案 我进行的高级更改: 1)我需要创建一个基于https://github.com/aspnet/AspNetKatana/blob/dev/src/Microsoft.Owin.Security.OpenIdConnect/OpenIdConnectAuthenticationMiddleware.cs的新的自定义中间件应用程序,但是要覆盖AuthenticationHandler方法以使用自定义身份验证处理程序而不是OpenIdConnectAuthenticationHandler。

2)用细齿梳捣碎两个代码集(ASPNetKatana和SpatialGuys),以修复诸如折旧方法之类的东西。

3)将对getclaims和getToken的调用更改为使用“ / oauth2 / v1 / userinfo”和“ / oauth2 / v1 / token”,而不是“ / userinfo”和“ token”,因为okta使用上述端点