因此,我目前正在执行与要求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的项目中包含哪些库/软件包,因此出现了构建错误。
答案 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使用上述端点