当前位置: 首页 > 知识库问答 >
问题:

如何通过OIDC协议将Okta配置为identity server的外部IDP?

谢俊力
2023-03-14

所以我目前在做类似于被要求的IdentityServer3和通过OpenIDConnect外部登录的事情,除了用okta作为我的外部Idp。(TL;dr:我有一个本地身份服务器3,通过openid Connect向外部Okta Idp进行身份验证。

我是OIDC和身份服务器3的新手。我的问题还与重定向URL中的内容有关。注意,我的本地身份服务器位于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这样的endpoint

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

有帮助吗?我试图通过OpenIDConnect创建一个类似于IdentityServer3和外部登录中定义的类,但我得到了构建错误,因为我不知道spatialguy的项目中包含了哪些库/包。

共有1个答案

商兴朝
2023-03-14

嗯,我想通了。我必须通过,用一个精细的齿梳空间家伙的解决方案来识别Server3,并通过OpenIDConnect进行外部登录

我所做的高级更改: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”和“/oauth1/v1/token”,而不是“/userinfo”和“token”,因为okta使用上述endpoint

 类似资料:
  • 我想外部化的选项,有一个可重用的类或注释,我可以扔在排除任何数据库/Hibernate初始化。 因此,与其写: 我想创建一个注释,我可以应用到我的主类: 然后通过注释启用此功能: 问题:注释方法不起作用,Spring仍然尝试加载数据库。为什么啊? 我的最终目标是拥有多个配置文件,其中只有一个加载数据库。

  • 我在不安全的T3连接上使用外部JNDI提供程序来访问本地实例上的远程WebLogic资源。现在我必须切换到安全连接(T3S),并使用带有自签名证书的双向身份验证。到目前为止,我已经尝试了以下几点: 在远程管理服务器上启用SSL侦听端口 在客户端和远程服务器上使用Java keytool生成keypair 将两台服务器配置为使用keystore/key 将自签名证书导出到对手的信任存储区(cacer

  • 我想将Okta配置为AWS Cognito标识池(不是用户池)的SAML IdP。 创建身份池时,我需要指定与AWS帐户关联的SAML IdP。作为定义IdP的一部分,我需要提供一个元数据文档文件: 要从Okta获取这个元数据文档,我需要在Okta中定义一个使用SAML集成的应用程序(即AWS是资源提供者,Okta是IdP): 这需要AWS提供2个我不知道如何获取的值: > 单一登录URL。Okt

  • 如何定制协议 实际上制定自己的协议是比较简单的事情。简单的协议一般包含两部分: 区分数据边界的标识 数据格式定义 一个例子 协议定义 这里假设区分数据边界的标识为换行符”\n”(注意请求数据本身内部不能包含换行符),数据格式为Json,例如下面是一个符合这个规则的请求包。 {"type":"message","content":"hello"}   注意上面的请求数据末尾有一个换行字符(在PHP中

  • 我使用Okta作为身份提供商,Zendesk作为服务提供商。我已经按照Okta文档(链接)所示配置了SAML2.0 当我从Okta仪表板点击Zendesk应用程序时,它会尝试登录到Zendesk,然后自动重定向回Okta主页。

  • 我正在开发一个由几个包组成的OSGi程序,我有时在本地windows dev计算机上运行,有时在经典的Linux上运行。目前,几个专用于资源连接的bundle都有自己的配置文件(属性文件),其中包含一些信息,比如访问一些重要文件的路径(在两个环境中都有)。 但是,由于两个执行环境中的路径不同,我必须在编译之前手动更改配置,这取决于我要在哪个环境中运行我的程序。