我正在尝试访问由 APP ID 服务实例保护的 REST API。我尝试了两种访问其余资源的方法,但总是将<title>Redirect To OP</title>
重定向 HTML 作为响应而不是实际资源。
1.方法1
使用云目录用户&和grant_type=password作为令牌端点
1.1 我在云目录中添加了用户名和密码。
1.2 HTTP POST 到<oauthServer>/token
端点,使用 clientID 和 Secret 作为基本身份验证和grant_type=password
, username=<cloud_direcotry_user>
,password=<password>
1.3 我得到 access_token 和 Identity Token
1.4 使用授权标头调用受保护资源,该标头具有访问令牌和身份令牌作为标头值'authorization' Bearer <accesstoken> <identity token>
1.5 响应包含重定向 HTML,而不是实际资源 JSON/XML。
方法二
<oauthserverUrl>/token
2.1 使用端点获取访问令牌并grant_type=client_credentials
添加基本身份验证,客户端 ID 和秘密作为用户名和密码
2.2 我得到了 Bearer 类型的访问令牌
2.3 使用授权头调用受保护的资源
authorization: Bearer <access_toke>
2.4 我得到相同的重定向响应<title>Redirect To OP</title>
而不是实际的资源 JSON/XML
___新更新___
这里是资源提供者的iberty的openid连接客户端配置。
<openidConnectClient id="<identifier>"
clientId= "${APPID_CLIENT_ID}"
clientSecret= "${APPID_CLIENT_SECRET}" authorizationEndpointUrl="${APPID_AUTH_SERVER}/authorization"
tokenEndpointUrl="${APPID_AUTH_SERVER}/token"
jwkEndpointUrl="${APPID_AUTH_SERVER}/publickeys"
issuerIdentifier="${APPID_AUTH_SERVER_ISSUER}"
tokenEndpointAuthMethod="basic"
signatureAlgorithm="RS256"
authFilterid="myAuthFilter"
trustAliasName="ng.bluemix.net"
trustStoreRef="appidtruststore"
redirectToRPHostAndPort="https://${env.APPID_SAMPLE_HOST}:${env.APPID_SAMPLE_SSL_PORT}"
userIdentityToCreateSubject="email"
inboundPropagation="supported"
validationEndpointUrl="${APPID_AUTH_SERVER}/introspect"
validationMethod="introspect"
/>