Provide authenticated username as parameter to a business service in OSB 12c

Dear OSB/OSB experts,
I have the following issue:
1. I have a web service that would accept username as a parameter in the SOAP request in order to do some internal authorization checks (filtering database rows, tables, etc.)
2. I want to connect that web service as business service in OSB 12c
3. The proxy service should NOT accept username as parameter
4. The proxy service should be protected via OWSM policy for authentication (either against the WLS authentication providers or through SAML tokens validation)
Based on the above is there any mechanism in the implementation of the proxy service to get the authenticated username from the security context and provide it as a parameter to the business service?
The authentication policy could use SAML tokens between two WLS domains - one will be running the WLS where proxy service clients will be running and the other - for the SOA 12c.
Many thanks in advance,
Anatoli

HI,
u can use Conditional Branching
http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1061670
Split join would be used in case u need to split your request and call your Business Service in Serial/parallel & then gather resposnes from multiple callouts to have single response
http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html#wp1137258
Abhinav

Similar Messages

  • Using a uddi key to create a business service in OSB

    I want to be able to use a service registry key when creating a business service in OSB. I've found documentation on how to do this in Oracle ESB, but not in OSB.
    From the documentation for OSB, I can only find a way to synchronize the business services imported from the service registry (when i search through the imported services there is no mention of the uddi key that i can see). I can choose to auto-import when setting up the registry, but I'm not sure exactly what this behavior does.
    From the console documentation (http://download.oracle.com/docs/cd/E13159_01/osb/docs10gr3/consolehelp/uddi.html)
    "You can use the Auto-Import Status page to synchronize changes to a service with those present in the registry. Upon any changes to a service in the registry, Oracle Service Bus provides notification of the change on the Auto-Import Status page which lists all out-of-sync services. You can then synchronize the service in the Oracle Service Bus Console with the corresponding service in the UDDI registry."
    This setting seems to automatically update the endpoint of the business service wihtout that administrator having to do anything, but what is actually being done? Is the service bus updating the endpoint as soon as it has been notified of a change or when i view/call the service is the endpoint being looked up?
    Am I missing something??
    Edited by: user498458 on Apr 27, 2009 11:30 AM

    I took your advice and re factored the Receive class so it had all the functionality I needed except two methods which would then be overridden in the derived classes. What I had a hard time understanding is once an object of class say SpecialReceive extends Receive it can be referred to as Receive yet still maintain that it's a SpecialReceive.
    What I mean is if I give a Receive object to some method and this method has no idea that this object is actually SpecialReceive and it calls a method say run() which gets overridden by the SpecialReceive. I thought that since this method has no idea what type of Receive this object is it will execute Receive's run(). But it actually does know what type of class it is and it executes the right run() method (the one that SpecialReceive overrides).
    After I realized this there is no more need for casting.
    Thanks everyone for your contributions.

  • Dynamic csf-key to Business service of OSB?

    We have created single Business Service which is getting called from one proxy service to execute different Web Service end points.
    For different end point execution I want to pass different authentication parameters.
    Currently we have configured User Id and Password through single csf-key through policy.
    Since csf-key is secured option to pass authentication parameters to end point,  is it possible to configure dynamic csf-key to Business service of OSB?

    Create a business service using file transport and type "Text".
    Obtain the file name and assign to $body in ur proxy service stage and publish to the business service u just created.

  • Best practices for Calling Multiple Business Services in OSB

    Hi All,
    I have a requirement where I need to call multiple business services in OSB. We are presently calling them sequentially in a proxy pipeline. I was wondering if we could accomplish the same task in a better way. Each of the business services are mutually exclusive.
    Thanks in Advance,
    Rudraksh

    Hi Eric,
    Thanks for the response. We figured that it is possible to call multiple services with Split Join. However, we ran into the issue you described. We had a blocking call and had to wait until each of the services returned a response.
    However, we needed a Async model for our design and felt that this might not be a right fit.
    We are now looking at implementing the publish option with QoS configured as this fits our usecase better. Thanks for the help again.
    Rudraksh

  • Problem in creating JMS business service in OSB

    Hi all
    I am creating a JMS business service in osb:request /response is TEXT
    It write to "*QueueSend*"-which is my URI endpoint
    I have a MDB which read from "*QueueSend*" and write to "*QueueReceive*"
    i have given the *"Response Endpoint*" in jms business service to point to "*QueueReceive*"
    When i send the msg, it write to QueueSend and mdb writes it to QueueReceive but JMS business service doesn't read from QueueReceive,it just wait a long .......
    What is the problem??
    Thanks
    Rohan

    Hi Rohan,
    Are you able to see consumers on "QueueReceive"?
    If no, then your BS is not listening on this queue. Check the end-point again. Check server logs to know if any error occured while BS tried to connect with Queue. Restart your server which has this queue and then the OSB, and try again.
    Regards,
    Anuj

  • Having multiple Stored procedure in a single Business Service in OSB

    Hi,
    Please let me know is it possible to have multiple Stored Procedure inside one business service in OSB.
    Regards,
    Abdul

    Hello Abdul,
    It is not possible to serve multiple stored procedures/functions with one business service because one business service can be based on one adapter only and one DB adapter can interface one DB component only. You may have one stored procedure which internally makes call to all other procedures as per your requirement and from OSB, call this single stored procedure using one business service.
    Regards,
    Anuj

  • How to keep data integrity with the two business service in OSB 10.3.1.0

    How to keep data integrity with the two business service in OSB 10.3.1.0
    In our customer system, customer want to keep data integerity between two businness service. I thinks this is XA transaction issue.
    Basing customer requirment, I created a testcase but I can't keep data integerity, For detail information, please refer the attached docs.

    Can you please explain what you meant my data integrity in your use case?
    Manoj

  • Calling Secured Business Service from OSB

    Hi,
    I am trying to call a Service which is secured.
    the Request SOAP message is like :
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns="urn:crmondemand/ws/activity/10/2004"
    xmlns:act="urn:/crmondemand/xml/activity"
    xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    *<soapenv:Header>*
    *     *<wsse:Security>**
    *          *<wsse:UsernameToken>**
    *               *<wsse:Username>USERX</wsse:Username>**
    *               *<wsse:Password type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">PASSWORD</wsse:Password>**
    **          </wsse:UsernameToken>**
    *     </wsse:Security>*
    *</soapenv:Header>*
    <soapenv:Body>
    ========================
    ========================
    </soapenv:Body>
    </soapenv:Envelope>
    I have created a business service and attached the service to Proxy service.
    I am new to OSB.I am unable to change the header data.In the forums i found couple of responses pointing to create
    Policy file or creating service account which were not clear to me.Dear expert , please guide me what exactly need to be done in this case.
    Thanks in advance,
    Regards,
    Chandra

    hi,
    Finally i have done it with the help of documentation.
    solution is :
    In the service configuration --> Policy -->select OWSM policy bindings (your domain should be configured with OWSM extention))
    select predefined oracle/wss_username_token_client_policy from in the OWSM configuration window
    next login to the em console: http://localhost:7001/em
    In the left hand side pane Go to Weblogic Domain -> select <your domain name>
    In the central pallete Weblogic Domain drop down goto secutiry --> Credentials.
    Here create a map with name : oracle.wsm.security (if not exists)
    Create a key by selecting the map as :oracle.wsm.security
    Key name : Sample_KEY
    Type : password
    Username: The username you are expecting in the soap header
    Password: The password you are expecting in the soap header
    Now go back to your service configuration -> Policy -> select the policy that you have added.
    there you can see the properties button enabled.click on it...
    there for the default_value = basic_credentials give the over_ride value as Sample_KEY (the key name you have mapped to the map)
    Regards,
    Chandra sekhar kommalapati

  • Read Timeout is not working with business service in OSB 11.6

    HI All,
    We have set below configuration in "Http Transport Configuration" of a business service.
    Read Timeout- 8
    Connection Timeout  - 8
    Authentication  - None
    Proxy Serve
    Follow HTTP redirects - Disable
    Use Chunked Streaming Mode - Enable
    Even though backend is taking more than the configured value in Read Timeout but timeout is not happening in OSB, Connection time out also not worked, when we tested with wrong backend URL.
    Any help for this configuration would appreciated.
    Thanks,.

    Hi,
         Have you invoked any Services before calling the Business Service.
    If Yes, then the problem with the Invoked service.In this scenario even if you set the time out period it will not work..
    If No, your request payload is high
    Regards,
    Kiran

  • Sign Body with a concrete certificate on Business Service in OSB

    We want to use in our programs an external ws, and this require that the body of the message goes signed.
    For make easier the use of this service in our programs, i would like this sign is made by OSB (Oracle Service Bus).
    Then..
    1.- I Have configured the keystore of OSB with the certificated.
    2.- I have made the business service, with the end-point the external ws.
    3.- I Have configured the sign-body ws-policy in business service.
    4.- When i prove it with debug console of OSB, i select the keystore provider and it works fine.
    The problem is:
    when i make the proxie service from the business service, it seems that the business service give the requeriment to the proxi for sign the body.
    and what i want is publish the proxie service, without this requirement, and sign the body en the same proxie with de determined key provider...
    The problem is:
    When i make the proxie service from the business service, it seems that the proxie service inherits the requeriment for sign the body.
    and what i want is publish the proxie service, without this requirement, and sign the body en the same proxie with key provider...
    In Other word, i would like the body message was signed by proxie service, and not by programs.
    I don't know how configure it on OSB.. ¿Can anyone help me?
    Thanks
    I don't know how configure it in OSB.. ¿Can anyone help me?
    Thanks

    Hi 990437 ,
    want to replace the directory path with a variable.. and i am calling this service in my proxy service using service callout.Inside service callout -- Request Actions -- use Routing Options action and assign variable in URI expressions
    OR if you are using JCA File adapter
    Inside service callout -- Request Actions -- use Set Transport Headers action
    Set Transport Header for Outbound request and add Header.Browse to jca.file.Directory from dropdown box in header and assign the new new directory location
    ( variable ) in under Action -- Set Header --Expression
    Regards,
    Abhinav Gupta

  • Proxy business services in osb

    In osb if i want to get data from a client then what is the procedure
    I am using a business service whose endpointuri is a proxy service (protocol http)
    And this business service is inturn called by my local proxy service
    Is this procedure correct ?
    if not then what is the correct procedure how many proxy and business services do i need to get data from my client
    Thanks,
    Rahul

    How many Proxy Services and Business Services to use depends on the use case.
    For example, if your client will initiate a transaction when it has some data to send to another system then you will have to configure following flow:
    First system (wants to send some data)--> Proxy Service(to receive data from Client) --> Business Service (to call the second system) --> second system web service API
    Another scenario in which you need to get some data from the second system when requested by the first system (query scenario) the above flow would still remain the same.
    Addition of another Proxy service depends on specific use case and scope of re-usability etc. For example if you want to fetch data from a system and that query can be reused in various processes or can also be called from various client applications then you can create a wrapper Proxy above the Business service and call this Proxy Service instead of calling the business service from your Proxy.
    Domain structure also is a deciding factor, for example if you want to call a Proxy in one domain from another domain you can use a Business Service in the requesting domain.

  • Regarding JMS-Queue/Topic in Proxy and Business service in OSB

    Hi
    I have one query regarding to the JMS-Queue/Topic.
    I am published the message to the JMS-Queue/Topic.
    ----My Business-service configuration is---
    General----Any xml
    Tranport--jms://localhost:7001/MyConnectionFactory/RequestQueue
    Response--None
    I call this Business-service in proxy-service of Routing message was published successfully to thee Queue.
    I try to dequeue the message from that queue for this
    --- I take another proxy with---
    General----Any xml
    Tranport--jms://localhost:7001/MyConnectionFactory/RequestQueue
    In meassage flow
    Routing--second busines-service)
    --- Second business-service configuration is---
    General----Any xml
    Tranport-File (C://temp)
    Issue is when I publish the message to Queue,the message is also found in the file  i.e C:temp. I don't now why  this come to the file.*
    Any suggestions
    Thanks
    Mani

    Either I did not get an idea, but in your JMS proxy you are routing to File :)
    If you don't want file, why route to 2nd BS ?

  • FILE NAME HAS TO PASS TO BUSINESS SERVICE in OSB

    I have a scenario where i have to get the name of the file , which my file adapter is going to poll.
    Proxyservice----->file Adapter artifacts.(Created a Proxyservice on OSB)
    i have to get the file name by using the jac:Header.
    How can i send the file name to businessservice in a body , businessservice will be a file write (body)

    Create a business service using file transport and type "Text".
    Obtain the file name and assign to $body in ur proxy service stage and publish to the business service u just created.

  • Combine response of two business services in OSB

    Scenario:
    I have a proxy service which ahs two business service call outs depending on the system name passed to it(e.g. 'ABC', 'XYZ')
    1. If the request contains 'SysName' = 'ABC', service related to 'ABC' gets called. The response is generated. (This is working.)
    2. If the request contains 'SysName' = 'XYZ', service related to 'XYZ' gets called. The response is generated. (This is working.)
    3. If the request contains 'SysName' = 'ALL', both the services related to 'ABC' and 'XYZ' systems should get call. The generated reponse should contains response of both the services.
    Please note that, the XSDs for reqeust/response of both 'ABC' and 'XYZ' services are same.
    Could you guide on steps to combine response of two business services?
    Thanks-
    Sachin

    Hi Sachin ,
    Yes u can can combine any number of service responses by using service callouts in separate/indivisual stages as it would be better to debug and trace the message flow.
    U can give explicitly user defined response variable names for the service callouts action and used them in ur pipeline (eg.response pipeline)where ever u want.
    U can create an xml structure like this where u r variables $responsebody_1.responsebody_2 are those which u hv defined while configuring the service callout action against the SOAP Response Body/Response Document Variable what ever u r using for calling BS
    <body>
    <response_1>{$responsebody_1}<response_1>
    <response_2>{$responsebody_2}<response_2>
    </body>
    and in the end use replace actionin the last stage of response pipeline to replace the entire body/node contents with the above mentioned xml structure to combiine both responses from BS
    Regards ,
    Abhinav

  • How to publish to different Business service in OSB

    Hi,
    I have a xml,based on the RecordType I need to send to two Business services.
    If 00020=Then i publish to LOSS BS
    if 00030=Then to Gain Business service.
    Then XML is as below.
    +<body>+
    +<CSSiteAndMeter>+
    +<Header>+
    +...+
    +</Header>+
    +<Detail>+
    +<RecordType>00010</RecordType>+
    +<RecordTypeLiteral>METERID</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00020</RecordType>+
    +<RecordTypeLiteral>LOSS</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00010</RecordType>+
    +<RecordTypeLiteral>METERID</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00030</RecordType>+
    +<RecordTypeLiteral>GAIN</RecordTypeLiteral>+
    +</Detail>+
    +<Trailer>+
    +...+
    +</Trailer>+
    +</CSSiteAndMeter>+
    +</body>+
    How do i do in OSB,though there is a IF condition in OSB which i can do by cheking the Record Type='00020',but i need the Record Type =00010 also while publishing, like below
    +<Detail>+
    +<RecordType>00010</RecordType>+
    +<RecordTypeLiteral>METERID</RecordTypeLiteral>+
    +</Detail>+
    +<Detail>+
    +<RecordType>00020</RecordType>+
    +<RecordTypeLiteral>LOSS</RecordTypeLiteral>+
    +</Detail>+

    HI,
    u can use Conditional Branching
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/modelingmessageflow.html#wp1061670
    Split join would be used in case u need to split your request and call your Business Service in Serial/parallel & then gather resposnes from multiple callouts to have single response
    http://docs.oracle.com/cd/E13159_01/osb/docs10gr3/userguide/splitjoin.html#wp1137258
    Abhinav

Maybe you are looking for