我最近遇到了一个错误,我已追溯到我的应用程序的绑定服务 - 单点登录。我已经尝试将对应用程序所做的任何更改还原到它工作但未解决的日期。
我在在线应用程序中有一个链接供管理员用户登录。该链接打开供我登录 - 当我选择登录时用于使用单一登录登录我并带我到管理员视图。但现在我收到此错误消息: -
“** OAuth 2.0 - 错误
处理OAuth时遇到以下错误 请求:
错误代码:invalid_client
错误说明:FBTOAU204E为此提供了无效的密码 标识符为“null”的客户端。“**
经过一番调查后,错误似乎是由于单点登录细节......但我无法找到解决方法或在何处纠正此错误。
我在论坛上看到SSO版本已经改变,所以可能是问题,但我也读过现有的应用程序与原始SSO服务应该仍然有效。我试图添加一些屏幕截图来显示SSO详细信息,但我的声誉不够高,不允许我这样做!
如果有任何进一步的信息需要帮助,请告诉我。 任何帮助或指示赞赏!
SSO凭据:
{
"user-provided": [
{
"name": "Single Sign On -Assessments",
"label": "user-provided",
"credentials": {
"profile_resource": "https://idaas.ng.bluemix.net/idaas/resources/profile.jsp",
"tokeninfo_resource": "https://idaas.ng.bluemix.net/idaas/resources/tokeninfo.jsp",
"token_url": "https://idaas.ng.bluemix.net/sps/oauth20sp/oauth20/token",
"authorize_url": "https://idaas.ng.bluemix.net/sps/oauth20sp/oauth20/authorize"
}
}
]
}
SSO代码摘录: -
public class SSOService {
final static String SERVICE_NAME = "single.sign.on";
final static String DEFAULT_OAUTH_PROFILE_RESOURCE = "https://idaas.ng.bluemix.net/idaas/resources/profile.jsp";
final static String DEFAULT_OAUTH_TOKENINFO_RESOURCE = "https://idaas.ng.bluemix.net/idaas/resources/tokeninfo.jsp";
final static String DEFAULT_OAUTH_TOKEN_ENDPOINT = "https://idaas.ng.bluemix.net/sps/oauth20sp/oauth20/token";
final static String DEFAULT_OAUTH_AUTHORIZE_ENDPOINT = "https://idaas.ng.bluemix.net/sps/oauth20sp/oauth20/authorize";
JSONObject _creds = null;
protected SSOService() {
VCAPServices vcs;
try {
vcs = new VCAPServices();
_creds = vcs.getCredentials(SERVICE_NAME);
} catch (JSONException e) {
_creds = null;
}
}
public String getOAuthProfileResource() {
return getCredential("profile_resource", DEFAULT_OAUTH_PROFILE_RESOURCE);
}
public String getOAuthTokenInfoResource() {
return getCredential("tokeninfo_resource",
DEFAULT_OAUTH_PROFILE_RESOURCE);
}
public String getOAuthTokenEndpoint() {
return getCredential("token_url", DEFAULT_OAUTH_TOKEN_ENDPOINT);
}
public String getOAuthAuthorizeEndpoint() {
return getCredential("authorize_url", DEFAULT_OAUTH_AUTHORIZE_ENDPOINT);
}
String getCredential(String attrName, String defaultValue) {
String result = null;
if (_creds != null) {
try {
result = _creds.getString(attrName);
} catch (JSONException e) {
result = null;
}
}
if (result == null) {
System.err.println("Unable to get credential: " + attrName
+ " from VCAP_SERVICES, using default: " + defaultValue);
result = defaultValue;
}
return result;
}
}