Установить индекс сеанса в экземпляре SAML LogoutRequest - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать один запрос на выход из системы с использованием библиотеки opensaml через класс LogoutRequest. Нет способа установить индекс сеанса в объекте запроса. Как мне построить LogoutRequest? Фрагмент кода, который я использую для создания объекта запроса, выглядит следующим образом:

SAMLObjectBuilder<LogoutRequest> builder = (SAMLObjectBuilder<LogoutRequest>) builderFactory.getBuilder(LogoutRequest.DEFAULT_ELEMENT_NAME);

LogoutRequest request = builder.buildObject();
request.setID(generateID());
request.setVersion(SAMLVersion.VERSION_20);
request.setIssueInstant(new DateTime());
request.setDestination(bindingService.getLocation());

SAMLObjectBuilder<Issuer> issuerBuilder = (SAMLObjectBuilder<Issuer>) builderFactory.getBuilder(Issuer.DEFAULT_ELEMENT_NAME);
Issuer issuer = issuerBuilder.buildObject();
issuer.setValue(metadata.getHostedSPName());
request.setIssuer(issuer);

SAMLObjectBuilder<NameID> namdIDBuilder = (SAMLObjectBuilder<NameID>) builderFactory.getBuilder(NameID.DEFAULT_ELEMENT_NAME);
NameID nameid = namdIDBuilder.buildObject();
nameid.setFormat("urn:oasis:names:tc:SAML:2.0:nameid-format:transient");
request.setNameID(nameid);

SAMLObjectBuilder<SessionIndex> sessionIndexBuilder = (SAMLObjectBuilder<SessionIndex>) builderFactory.getBuilder(SessionIndex.DEFAULT_ELEMENT_NAME);
SessionIndex sessionindex = sessionIndexBuilder.buildObject();
sessionindex.setSessionIndex(sessionIndex);

Как вы можете видеть выше, после построения SessionIndex нет возможности установить его в объекте LogoutRequest.

Может кто-нибудь показать мне пример или ссылку, чтобы понять это правильно?

1 Ответ

0 голосов
/ 06 марта 2019

Мне удалось сделать это следующим образом:

SessionIndex sessionIndex_ = (SessionIndex) Configuration.getBuilderFactory()
                                            .getBuilder(SessionIndex.DEFAULT_ELEMENT_NAME)
                                            .buildObject(SessionIndex.DEFAULT_ELEMENT_NAME);                
sessionIndex_.setSessionIndex("test");
request.getSessionIndexes()
       .add(sessionIndex_);
...