ユーザーをシステムにSSOするためのヘッダーパラメーターを取得するためにフックしようとしている既存のクラスがあります。クラスは以下の通りです。
import java.util.Map;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import org.springframework.stereotype.Component;
@Component
@Path("/http")
public class HttpResource {
@GET
@Path("/getHeaders")
@Produces(MediaType.APPLICATION_JSON)
public Map<String, String> getAllHeaders(@Context HttpHeaders headers) {
Map<String, String> headerList = new HashMap<String, String>();
for (String key : headers.getRequestHeaders().keySet()) {
String value = headers.getRequestHeader(key).get(0);
System.out.println(key + " : " + value);
headerList.put(key, value);
}
return headerList;
}
}
私が理解しようとしているのはgetAllHeaders()
、@Context
引数でどのように呼び出すのですか? 私が持っているクラスの例をたくさん見つけましたが、それを呼び出す方法を示すものは何もありません。
また、引数としてではなく、クラス内に注釈を入れてみました。
@Context
HttpHeaders httpHeaders;
しかし、アクセスしようとするhttpHeaders.getAllHeaders()
とnullが返されます。javaxドキュメントでnullを返さないと書かれているため、実際には作成されていないためだと思います。
SSOAuthorizationFilter.java 内でこれを呼び出そうとしていますが、コントローラー経由でもアクセスしようとしました。