Thursday, January 3, 2008

Blogger template - Where did that quickedit icon go?

pencil icon, that"s clickable to start editing the post

Sometime between back then and now, some of the icons on my blog have disappeared. I do not always catch a change just when it happens and often I give it a chance to come back by itself since it can be cause by some intermittent problem. This is one of those problems, where I after some time have to look into it. When you're logged into blogger there used to be an edit for quickedit, which is nice so that I start edit right away when I spot a typo or wants to update a post. Alternative I have to go through posts and pick the right one, which is much more troublesome. Here's a snippet from my current template of where it's inserted:

  813                 <b:includable id='postQuickEdit' var='post'>
  814                   <b:if cond='data:post.editUrl'>
  815                     <span expr:class='"item-control " + data:post.adminClass'>
  816                       <a expr:href='"http://www2.blogger.com/post-edit.g?blogID=591744930960839717&amp;amp;postID=" + data:post.id' expr:title='data:top.editPostMsg'>
  817                         <span class='quick-edit-icon'>EDIT
  818                           &#160;
  819                         </span>
  820                       </a>
  821                     </span>
  822                   </b:if>
  823                 </b:includable>

That's right there's no <img../> tag. When I started using blogger I was puzzled by who these icons magically appeared, and found that it was controlled by CSS depended on whether you were logged in or not. Do notice the character entity &#160;(the ISO 8859-1 Symbol Entities for non-breaking space). I added the EDIT some time ago to give myself something to click.

The CSS file that defined this is (was) http://www.blogger.com/css/blog_controls.css, as the comment in top says:

 /*
-----------------------------------------------
Quick Edit and Delete Comment Icons
----------------------------------------------- */

/* Hide it now, show it later with dynamically-generated CSS */
.item-control {
   display:none;
}

.item-control a, .item-action a {
   text-decoration:none !important;
}

.widget-item-control {
  float: right;
}

.icon-action {
  border-style: none !important;
  margin: 0 0 -5px 0.5em !important;
}

.delete-comment-icon {
   background: url("/img/icon_delete13.gif") no-repeat left;

   /* makes a 14x14 box */
   padding:7px;
}

/* Mobile video tags shown on handhelds only.
   All others get regular video tags. */
@media all {
  .BLOG_mobile_video_class {
    display:none;
  }
}

@media handheld {
  .BLOG_mobile_video_class {
    display:inline;
  }
  .BLOG_video_class {
    display:none;
  }
}

At first I was sure that it was my own fault, that I during one of my minor updates to my template had removed or spoiled something. But the markup source showed that it was okay.

I found the answer in Quick edit icon is gone from the Blogger Help Group. Blogger has changed this so that now I do have to add the icon by explicit markup to http://www.blogger.com/img/icon18_edit_allbkg.gif (pencil icon), so now my template contains:

  926                 <b:includable
  927                   id='postQuickEdit'
  928                   var='post'>
  929                   <b:if cond='data:post.editUrl'>
  930                     <span expr:class='"item-control " + data:post.adminClass'>
  931                       <a
  932                         expr:href='"http://www2.blogger.com/post-edit.g?blogID=591744930960839717&amp;amp;postID=" + data:post.id'
  933                         expr:title='data:top.editPostMsg'>
  934                         <span class='quick-edit-icon'>
  935                           <img
  936                             src="http://www.blogger.com/img/icon18_edit_allbkg.gif"
  937                             alt="pencil icon, that's clickable to start editing the post"
  938                             style="border: 0px" />
  939                         </span>
  940                       </a>
  941                     </span>
  942                   </b:if>
  943                 </b:includable>

There are other icons.

Email this to a friend

Here the template looks like:

  712                         <span class='post-icons'>
  713                           <!-- email post links -->
  714                           <b:if cond='data:post.emailPostUrl'>
  715                             <span class='item-action'>
  716                               <a expr:href='"http://www2.blogger.com/email-post.g?blogID=591744930960839717&amp;amp;postID=" + data:post.id' expr:title='data:top.emailPostMsg'>
  717                                 <span class='email-post-icon'>
  718                                   &#160;
  719                                 </span>
  720                               </a>
  721                             </span>
  722                           </b:if>
  723                           <!-- quickedit pencil -->
  724                           <b:include data='post' name='postQuickEdit'/>
  725                         </span>

And I need to and an image tag to http://www.blogger.com/img/icon18_email.gif (envelope icon), like for the quickedit.

Delete comment and Delete backlink

For some reason the change isn't consequent, since these two icons are still served the old way - see the CSS listed above where the class delete-comment-icon adds a background image from http://www.blogger.com/img/icon_delete13.gif . The template fragments are:

  746                 <b:includable id='commentDeleteIcon' var='comment'>
  747                   <span expr:class='"item-control " + data:comment.adminClass'>
  748                     <a expr:href='data:comment.deleteUrl' expr:title='data:top.deleteCommentMsg'>
  749                       <span class='delete-comment-icon'>
  750                         &#160;
  751                       </span>
  752                     </a>
  753                   </span>
  754                 </b:includable>

and for delete backlink:

  791                 <b:includable id='backlinkDeleteIcon' var='backlink'>
  792                   <span expr:class='"item-control " + data:backlink.adminClass'>
  793                     <a expr:href='data:backlink.deleteUrl' expr:title='data:top.deleteBacklinkMsg'>
  794                       <span class='delete-comment-icon'>
  795                         &#160;
  796                       </span>
  797                     </a>
  798                   </span>
  799                 </b:includable>

Here's a example of how three of these icons are placed on one of my posts:

screendump showing a partial blogpost with the icons for edit, email friend and delete backlink

Read more

Wednesday, January 2, 2008

SAML V2.0 SessionIndex - the what and why

pencil icon, that"s clickable to start editing the post

After working with and reading about SAML V2.0 for some time, I came to think that i finally got it - and that was sort of correct but at a very high level. The devil (and development time) is in the detail, and even though a lot of time and work has been put into the SAML V2.0 specifications, they are not perfect (along with my reading skills). At the moment I almost do not dare to test myself because it's been an unpleasant experience the last couple of times - ex. have a look at SAML V2.0 Confirmation Method Identifiers - ahem, is this crystal clear?. Still i ran into one more of my blind spots. I wanted to better understand the difference between Assertion and Session, just to stumble upon SessionIndex that I had not paid any notice before. So what is this index for sessions about?

The SAML V2.0 Glossary doesn't mention it and the closest thing to a definition is in [SAMLCore] [PDF] section "2.7.2 Element <AuthnStatement>":

SessionIndex [Optional]
Specifies the index of a particular

Further down there's more on SessionIndex (my strong):

In general, any string value MAY be used as a SessionIndex value. However, when privacy is a consideration, care must be taken to ensure that the SessionIndex value does not invalidate other privacy mechanisms. Accordingly, the value SHOULD NOT be usable to correlate activity by a principal across different session participants. Two solutions that achieve this goal are provided below and are RECOMMENDED:

  • Use small positive integers (or reoccurring constants in a list) for the SessionIndex. The SAML authority SHOULD choose the range of values such that the cardinality of any one integer will be sufficiently high to prevent a particular principals actions from being correlated across multiple session participants. The SAML authority SHOULD choose values for SessionIndex randomly from within this range (except when required to ensure unique values for subsequent statements given to the same session participant but as part of a distinct session).
  • Use the enclosing assertion's ID value in the SessionIndex.

I'm not sure about what's meant with correlate activity, but I guess that is to avoid the SP visits are numbered chronological. I would have like some more description of what it really is and why it's there, my best shot is to enable the possibility for multiple sessions from the same Principal (rarely used) or Agent (rarely implemented) - but I would have preferred the term identifier over index (in computer science, either an integer which identifies an array element, or a data structure which enables fast lookup) though these terms are closely related. Let's see what's what written about it elsewhere in the specs. In "3.3.2.2 Element <AuthnQuery>":

SessionIndex [Optional]
If present, specifies a filter for possible responses. Such a query asks the question What assertions containing authentication statements do you have for this subject within the context of the supplied session information?

Getting back a little to my original goal, the assertions are most often transient (finite lifespan) but saved within the context of a session. It's optional so the dependency must be relatively week:

  • If the SessionIndex attribute is present in the query, at least one <AuthnStatement> element in the set of returned assertions MUST contain a SessionIndex attribute that matches the SessionIndex attribute in the query. It is OPTIONAL for the complete set of all such matching assertions to be returned in the response.

In "3.7.1 Element <LogoutRequest>":>/p>

<SessionIndex> [Optional]
The identifier that indexes this session at the message recipient.

Next it's mentioned in "3.7.3.1 Session Participant Rules"

When a session participant receives a <LogoutRequest> message, the session participant MUST authenticate the message. If the sender is the authority that provided an assertion containing an authentication statement linked to the principal's current session, the session participant MUST invalidate the principal's session(s) referred to by the <saml:BaseID>, <saml:NameID>, or <saml:EncryptedID> element, and any <SessionIndex> elements supplied in the message. If no <SessionIndex> elements are supplied, then all sessions associated with the principal MUST be invalidated.

and:

  • The SessionIndex attribute of one of the assertion's authentication statements matches one of the <SessionIndex> elements specified in the logout request, or the logout request contains no <SessionIndex> elements.

and:

Note: This rule is intended to prevent a situation in which a session participant receives a logout request targeted at a single, or multiple, assertion(s) (as identified by the <SessionIndex> element(s)) before it receives the actual – and possibly still valid - assertion(s) targeted by the logout request. It should honor the logout request until the logout request itself may be discarded (the NotOnOrAfter value on the request has been exceeded) or the assertion targeted by the logout request has been received and has been handled appropriately.

"3.7.3.2 Session Authority Rules"

When constructing a logout request message, the session authority MUST set the value of the NotOnOrAfter attribute of the message to a time value, indicating an expiration time for the message, after which the logout request may be discarded by the recipient. This value SHOULD be set to a time value equal to or greater than the value of any NotOnOrAfter attribute specified in the assertion most recently issued as part of the targeted session (as indicated by the SessionIndex attribute on the logout request).

In [SAMLProfiles] [PDF] it is mentioned in one of the bullet points in "4.1.4.2 <Response> Usage" :

At least one assertion containing an <AuthnStatement> MUST contain a element with at least one <SubjectConfirmation> element containing a Method of urn:oasis:names:tc:SAML:2.0:cm:bearer. If the identity provider supports the Single Logout profile, defined in Section 4.4, any such authentication statements MUST include a SessionIndex attribute to enable per-session logout requests by the service provider.

and again in "4.4.3.1 <LogoutRequest> Issued by Session Participant to Identity Provider":

If the logout profile is initiated by a session participant, it examines the authentication assertion(s) it received pertaining to the session(s) being terminated, and collects the SessionIndex value(s) it received from the identity provider. If multiple identity providers are involved, then the profile MUST be repeated independently for each one.

To initiate the profile, the session participant issues a <LogoutRequest> message to the identity provider's single logout service request endpoint containing one or more applicable <SessionIndex> elements. At least one element MUST be included. Meta data (as in [SAMLMeta]) MAY be used to determine the location of this endpoint and the bindings supported by the identity provider.

and in "4.4.3.2 Identity Provider Determines Session Participants"

If the logout profile is initiated by an identity provider, or upon receiving a valid <LogoutRequest> message, the identity provider processes the request as defined in [SAMLCore]. It MUST examine the identifier and elements and determine the set of sessions to be terminated. The identity provider then follows steps 3 and 4 for each entity participating in the session(s) being terminated, other than the original requesting session participant (if any), as described in Section 3.7.3.2 of [SAMLCore].

and in "4.4.4.1 <LogoutRequest> Usage":

The principal MUST be identified in the request using an identifier that strongly matches the identifier in the authentication assertion the requester issued or received regarding the session being terminated, per the matching rules defined in Section 3.3.4 of [SAMLCore].

If the requester is a session participant, it MUST include at least one <SessionIndex> element in the request. If the requester is a session authority (or acting on its behalf), then it MAY omit any such elements to indicate the termination of all of the principals applicable sessions.

Conclusion

Having gone through all the descriptions it quite simply a means to enable multiple sessions for a user (probably with different applications), which is quite a reasonable requirement.

Read more

Thursday, December 27, 2007

"Multiple same specifications" and the missing boot.log

pencil icon, that"s clickable to start editing the post

I'm using Fedora for my DTop and for some time I've had two SELinux warnings during boot complaining about "Multiple same specifications" for some VLC files. Tonight I finally did something about it and found a spot on post on LinuxQuestions.org by lonecrow called SELinux "Multiple same specifications" annoyance, where macemoneta gives the answer.

Getting this fixed was nice, but it's not all the story. I found the warnings during boot on the console, but at first I didn't memorize it and looked for the warning in /var/log/boot.log to discover that it was empty!:

# ll /var/log/boot.log
-rw------- 1 root root 0 Dec 26 21:28 /var/log/boot.log

What the hell, had my system been compromised for I know not how long? Luckily it hasn't (hopefully) since it's an anti-feature of Fedora that logging to boot.log is disabled. You can read for yourself on Bugzilla Bug 151238: boot.log is empty - it's a very old bug that's been in the frozen zone for some time and obviously didn't even get fixed in the most recent dist: Fedora 8. I'm surprised that something that fundamental isn't working, but instead of just complaining I'll have to sign up for bugzilla and give my vote cause I sure can't change it myself.

Read more

Friday, December 21, 2007

Rampart basic examples - how you add WS-Security to Axis2

pencil icon, that"s clickable to start editing the post

In my personal opinion Web Services Security is the most successful addition to the web service SOAP stack, often called WS-*. It was much needed and avoided to run into conflicts between the big market players, which to the contrary one of the other much needed abilities, that of adding reliability, ran into big time. Some might argue that WS-Addressing is equally successful and it is important, but for one the standardization process took much longer and secondly (again a personal one) I've primarily been using web services in synchronous mode (in-out) and not in complex flows, so I've not had much need for it though I've had to live with it.

It's been some time since I last used WS-Security and it was back in the early days of WSS4J and Axis1. In the meantime Axis2 has evolved with a new architecture and nice features like native XMLBeans support. For WS-Security it's still WSS4J with support for Web Services Security v1.0 (March 2004), and as far as I can tell support for Web Services Security v1.1 (February 2006) is not that far away. With Axis2 the days of adding handlers and adding parameters with generic name/value constructs are over. Now the Axis2 architecture is build on Flows, Phases, Handlers, and Modules (From the OxygenTank) and there's a seperate module, called Rampart, that plugs WS-Security support with WSS4J into Axis2. The Axis2 guide for using rampart: Securing SOAP Messages with Rampart practically covers it all, but for new comers there's a great set of samples covering about just all practical scenarios of using WS-Security. In this post I give an quick overview over these samples.

Note: Rampart does have it's own subsite, but it does not look like it's being maintained since the last release here is still 1.2.

Basic samples

There are 11 examples bundled with the current Rampart. It's all configured with two parameters named InflowSecurity and OutflowSecurity in the files services.xml (server side) and axis2.xml (client side). I'll now go through all of them with the central configurations and a mix of the comments that come with the samples and my own. I'll not show any of the code, for that you'll have to look at the samples yourself.

01. Rampart Engaged and no configuration

The first sample actually does NOT add WS-Security, and shows the basic service that's used and the needed Axis2 configuration. Thereby also showing that Apache Rampart does not work on the messages when simply engaged without any configuration (parameters).

In this post I'll only show the server side configuration since it's almost identical to the client side. For this sample the services.xml file looks like:

    1 <?xml version="1.0" encoding="UTF-8"?>
    2 <!--
    3   !
    4   ! Copyright 2006 The Apache Software Foundation.
    5   !
    6   ! Licensed under the Apache License, Version 2.0 (the "License");
    7   ! you may not use this file except in compliance with the License.
    8   ! You may obtain a copy of the License at
    9   !
   10   !      http://www.apache.org/licenses/LICENSE-2.0
   11   !
   12   ! Unless required by applicable law or agreed to in writing, software
   13   ! distributed under the License is distributed on an "AS IS" BASIS,
   14   ! WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   15   ! See the License for the specific language governing permissions and
   16   ! limitations under the License.
   17   !-->
   18 <!-- services.xml of sample-1 : No Security-->
   19 <service>
   20   <operation name="echo">
   21     <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />
   22   </operation>
   23   <parameter
   24     name="ServiceClass"
   25     locked="false">
   26     org.apache.rampart.samples.sample01.SimpleService
   27   </parameter>
   28 
   29   <module ref="rampart" />
   30 
   31 </service>

So adding the module doesn't do nothing in itself, contrary to the behavior of WS-Addressing.

02. UsernameToken authentication

The client is configured to add a UsernameToken to the outgoing message. The service is configured to process it.

From now I'll just show the WS-Security parameters to keep it short and focused:

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>UsernameToken Timestamp</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample02.PWCBHandler</passwordCallbackClass>
   36     </action>
   37   </parameter>

Note how org.apache.rampart.samples.sample02.PWCBHandler supplies the password to wss4j to compute the digest for comparison.

03. UsernameToken authentication with a plain text password

The client is configured to add a UsernameToken to the outgoing message. Note the <passwordType>PasswordText</passwordType> element. The service is configured to process it.

Note how org.apache.rampart.samples.sample03.PWCBHandler authenticates the password

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>UsernameToken</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample03.PWCBHandler</passwordCallbackClass>
   36     </action>
   37   </parameter>

04. Message integrity and non-repudiation with signature

Both client and servce are configured to sign the outgoing message and to verify the signature of the incoming message using their key pairs.

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Timestamp Signature</items>
   35       <signaturePropFile>service.properties</signaturePropFile>
   36     </action>
   37   </parameter>
   38 
   39   <parameter name="OutflowSecurity">
   40     <action>
   41       <items>Timestamp Signature</items>
   42       <user>service</user>
   43       <passwordCallbackClass>org.apache.rampart.samples.sample04.PWCBHandler</passwordCallbackClass>
   44       <signaturePropFile>service.properties</signaturePropFile>
   45       <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
   46     </action>
   47   </parameter>

05. Encryption

Both client and servce are configured to encrypt the outgoing message and to decrypt incoming message using their key pairs.

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Encrypt</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample05.PWCBHandler</passwordCallbackClass>
   36       <decryptionPropFile>service.properties</decryptionPropFile>
   37     </action>
   38   </parameter>
   39 
   40   <parameter name="OutflowSecurity">
   41     <action>
   42       <items>Encrypt</items>
   43       <encryptionUser>client</encryptionUser>
   44       <encryptionPropFile>service.properties</encryptionPropFile>
   45     </action>
   46   </parameter>

06. Sign and encrypt a messages

Both client and servce are configured to first sign and then encrypt the outgoing message and to decrypt and verify the incoming message using their key pairs.

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Timestamp Signature Encrypt</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample06.PWCBHandler</passwordCallbackClass>
   36       <signaturePropFile>service.properties</signaturePropFile>
   37     </action>
   38   </parameter>
   39 
   40   <parameter name="OutflowSecurity">
   41     <action>
   42       <items>Timestamp Signature Encrypt</items>
   43       <user>service</user>
   44       <passwordCallbackClass>org.apache.rampart.samples.sample06.PWCBHandler</passwordCallbackClass>
   45       <signaturePropFile>service.properties</signaturePropFile>
   46       <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
   47       <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
   48       <encryptionUser>useReqSigCert</encryptionUser>
   49     </action>
   50   </parameter>

07. Encrypt and sign messages

Both client and servce are configured to first encrypt and then sign the outgoing message and to verify and decrypt the incoming message using their key pairs.

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Timestamp Encrypt Signature</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample07.PWCBHandler</passwordCallbackClass>
   36       <signaturePropFile>service.properties</signaturePropFile>
   37     </action>
   38   </parameter>
   39 
   40   <parameter name="OutflowSecurity">
   41     <action>
   42       <items>Timestamp Encrypt Signature</items>
   43       <user>service</user>
   44       <passwordCallbackClass>org.apache.rampart.samples.sample07.PWCBHandler</passwordCallbackClass>
   45       <signaturePropFile>service.properties</signaturePropFile>
   46       <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
   47       <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
   48       <encryptionUser>useReqSigCert</encryptionUser>
   49     </action>
   50   </parameter>

08. Signing twice

The client is configured to sign the outgoing message twice. Note the aditional <action>> element that defines the second signature (client side) and that we simply use "Signature Signature" as action items (server side - here).

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Timestamp Signature Signature</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample08.PWCBHandler</passwordCallbackClass>
   36       <signaturePropFile>service.properties</signaturePropFile>
   37     </action>
   38   </parameter>

09. Encryption with a key known to both parties

Encryption with a key known to both parties. Both client and servce are configured to encrypt the outgoing message and to decrypt incoming message using a known named key.

Note the use of <EmbeddedKeyName>SessionKey</EmbeddedKeyName> and that org.apache.rampart.samples.sample09.PWCBHandler sets the key

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Encrypt</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</passwordCallbackClass>
   36       <decryptionPropFile>service.properties</decryptionPropFile>
   37     </action>
   38   </parameter>
   39 
   40   <parameter name="OutflowSecurity">
   41     <action>
   42       <items>Encrypt</items>
   43       <user>service</user>
   44       <encryptionKeyIdentifier>EmbeddedKeyName</encryptionKeyIdentifier>
   45       <encryptionPropFile>service.properties</encryptionPropFile>
   46       <EmbeddedKeyCallbackClass>org.apache.rampart.samples.sample09.PWCBHandler</EmbeddedKeyCallbackClass>
   47       <EmbeddedKeyName>SessionKey</EmbeddedKeyName>
   48     </action>
   49   </parameter>

10. MTOM Optimizing base64 content in the secured message

Sign and encrypt messages. Both client and servce are configured to first sign and then encrypt the outgoing message and to decrypt and verify the incoming message using their key pairs.

Note the use of <optimizeParts>[xpath expression]</optimizeParts>

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Timestamp Signature Encrypt</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample10.PWCBHandler</passwordCallbackClass>
   36       <signaturePropFile>service.properties</signaturePropFile>
   37     </action>
   38   </parameter>
   39 
   40   <parameter name="OutflowSecurity">
   41     <action>
   42       <items>Timestamp Signature Encrypt</items>
   43       <user>service</user>
   44       <passwordCallbackClass>org.apache.rampart.samples.sample10.PWCBHandler</passwordCallbackClass>
   45       <signaturePropFile>service.properties</signaturePropFile>
   46       <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
   47       <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
   48       <encryptionUser>useReqSigCert</encryptionUser>
   49     </action>
   50   </parameter>

11. Dynamic configuration : Get rid of the config files ... let's use code!

Both client and servce are configured to first sign and then encrypt the outgoing message and to decrypt and verify the incoming message using their key pairs.

Note that we don't use any parameters in the client.axis2.xml, see org.apache.rampart.samples.sample11.Client's getOutflowConfiguration() and getInflowConfiguration() methods and their usage.

   32   <parameter name="InflowSecurity">
   33     <action>
   34       <items>Timestamp Signature Encrypt</items>
   35       <passwordCallbackClass>org.apache.rampart.samples.sample11.PWCBHandler</passwordCallbackClass>
   36       <signaturePropFile>service.properties</signaturePropFile>
   37     </action>
   38   </parameter>
   39 
   40   <parameter name="OutflowSecurity">
   41     <action>
   42       <items>Timestamp Signature Encrypt</items>
   43       <user>service</user>
   44       <passwordCallbackClass>org.apache.rampart.samples.sample11.PWCBHandler</passwordCallbackClass>
   45       <signaturePropFile>service.properties</signaturePropFile>
   46       <signatureKeyIdentifier>DirectReference</signatureKeyIdentifier>
   47       <encryptionKeyIdentifier>SKIKeyIdentifier</encryptionKeyIdentifier>
   48       <encryptionUser>useReqSigCert</encryptionUser>
   49     </action>
   50   </parameter>

Read more

Friday, December 14, 2007

Dont update Eclipse - upgrade

pencil icon, that"s clickable to start editing the post

I've been a happy Eclipse user for some years now. I've seen all sorts of nice features being added like the WTP project in it self. One thing that hasn't changed that much though is the update tool. Updating Fedora with yum is quite simple and relatively quick, but that's not the way I experience it with Eclipse. It seems rather slow and using to choose mirrors makes it very slow (haven't found the fast sites). I'm not all alone with that: Eclipse updates still lag behind.

Therefore I update seldom, but the other night I thought it was time to update again. So I ate the pain an started goin:

And it kept like this with the diffenrent tools I use, finally getting ready to install and then I got an error! I'm sorry I didn't make a screenshot of it, but I sure as h*** wasn't going to do it once more, so I thought I might try some precision work:

It turned out that my setup contained errors, even though I hadn't had any problems with it. Maybe an update on this plugin could fix it:

Nope, no news. I gave up and dowloaded that latest J2EE package from scracth and installed anew my favorite plugins like subclipse. With a completly new package I decided to stay updated and ran the tool again:

I have perviously updated with success, but now I've realized that I don't update Eclipse - I upgrade.

Read more