Search Results

Search found 23603 results on 945 pages for 'non technical manager'.

Page 405/945 | < Previous Page | 401 402 403 404 405 406 407 408 409 410 411 412  | Next Page >

  • Are all languages basically the same?

    - by Anirudh
    Recently, i had to understand the design of a small program written in a language i had no idea about (ABAP, if you must know). I could figure it out without too much difficulty. I realize that mastering a new language is a completely different ball game, but purely understanding the intent of code (specifically production standard code, which is not necessarily complex) in any language is straight forward, if you already know a couple of languages (preferably one procedural/OO and one functional). Is this generally true? Are all programming languages made up of similar constructs like loops, conditional statements and message passing between functions? Are there non-esoteric languages that a typical Java/Ruby/Haskell programmer would not be able to make sense of? Do all languages have a common origin?

    Read the article

  • Replacing LF, NEL line endings in text file with CR+LF

    - by Tomas Lycken
    I have a text file with a strange character encoding that I'd like to convert to standard UTF-8. I have managed to get part of the way: $ file myfile.txt myfile.txt: Non-ISO extended-ASCII text, with LF, NEL line endings $ iconv -f ascii -t utf-8 myfile.txt > myfile.txt.utf8 $ file myfile.txt.utf8 myfile.txt.utf8: UTF-8 Unicode text, with LF, NEL line endings ## edit myfile.txt.utf8 using nano, to fix failed character conversions (mostly åäö) $ file myfile.txt.utf8 myfile.txt.utf8: UTF-8 Unicode text, with LF, NEL line endings However, I can't figure out how to convert the line endings. How do I do to replace LF+NEL with CR+LF (or whatever is the standard)? When I'm done, I'd like to see the following: $ file myfile.txt myfile.txt: UTF-8 Unicode text

    Read the article

  • Does Unity support disabling the global application menu?

    - by Michael E
    I'm fairly excited for Unity, as it looks like a promising new direction for Ubuntu. However, I do have a concern - will it be possible to use Unity without the global menu? I have my window manager set to focus-follows-mouse/sloppy focus, and find the productivity gains to be immense. Sloppy focus is incompatible, however, with global menus, as it is possible for the focus to change while you move from window to menu. Will Unity support an option to use window menus while still using Unity?

    Read the article

  • Order independent transparency in particle system

    - by Stepan Zastupov
    I'm writing a particle system and would like to find a trick to achieve proper alpha blending without sorting particles because: Each particle is a point sprite in a single mesh and I can't use scene graph ability to sort transparent nodes. The system node should be properly sorted, though. Particle position is computed on shader from initial velocity, acceleration and time. In order to sort the system I would have to perform all this computations on CPU, which is something I want to avoid. Sorting hundreds of particles against camera position and uploading it on GPU each frame seams to be quiet heavy operation. Alpha testing seems to be fast enough on GLES 2.0 and works fine for non-transparent but "masked" textures. Still, it's not enough for semi-transparent particles. How would you handle this?

    Read the article

  • Ops Center Update 2 is available!

    - by Owen Allen
    Oracle Enterprise Manager Ops Center Release 1, Update 2 (12.1.2.0.0) is available. This release includes support for Oracle Solaris 11.1 and Oracle Linux 6.3, the ability to attach a network multiple times to an LDom guest using the same vswitch, support for HMP 2.2.3, improved options for adding users from remote directory servers, and a few other useful features. A list of new features is in What's New. You can view the documentation online, or you can download a zip file of the library from the Overview tab. If you're running Ops Center in connected mode, the updates are delivered to the UI. If you are in disconnected mode or have not yet installed Ops Center, you can go to the Ops Center download page to get the latest release. Before installing or upgrading to Ops Center 12c Update 2, review the Release Notes for things to watch out for, then see the upgrade instructions in the Administration Guide.

    Read the article

  • Install Ubuntu or Kubuntu?

    - by squallbayu
    I want to upgrade my Ubuntu Lucid to Kubuntu Maverick (with a fresh install of course). I want to try KDE, but I have heard there are slight issues with the native QT applications compared to the GTK application equivalents - such as nvidia-settings, Gimp, Ubuntu Software Centre, and especially th eSynaptic package manager (which in detail showed the administration package / KPackageKit is not powerful yet than synaptic) I believe we can have run GTK+ applications in KDE, but GTK+ applications do not blend with the KDE desktop. Also Java does not provide a GUI for KDE/QT. Should I install Kubuntu (KDE / QT) or stay with ubuntu (GNOME / GTK +)?

    Read the article

  • Open source ASP.NET MVC project for a SaaS application

    - by DotnetDude
    I am working on a personal project that offers a service online. I'd like put this out to the public. I don't want to reinvent the wheel and use an existing template/open source project and add my service specific functionality. The features I am looking for are: Support for different roles (I need to have an admin role, customer and preferred customer roles) An admin section where admins can manage user accounts, login as with users credentials for providing support Customer pages that are role specific (Ex: Some functionality can be used by preferred customers but not non preferred ones) Preferably a pricing/plans page with payment gateway integration These are some of the basic pages available in most of service sites online. Is there a MVC 3 (preferably 4) written in C# that I can use as a shell to build upon? Thanks

    Read the article

  • how to change gtk3 color scheme on ubuntu 13.04

    - by Michael87
    I am making the transition from windows 7 to ubuntu 13.04. I have ran ubuntu twice on my laptop and switched back to windows 7 namely becuase the orange and gray colors of ubuntu is just ugly. I know how to change ambiance to radiance but the gtk colors themselves SHOULD be customizable. I managed to do it once with 12.04 using kde's color manager but the thing wigged out on me. So please. is there a way to change 13.04's color scheme without downloading some theme that may or may not work? thank you.

    Read the article

  • Intermittent Copy/Paste Problem in RDP

    - by Tara Kizer
    If you use RDP to remotely connect to your servers, you've probably encountered a clipboard issue where copy/paste stops working.  A quick Google search on the problem indicates you can easily fix the problem by logging out/logging back in or killing/restarting rdpclip.exe on the remote server.  Here's an article which covers this topic. But what do you do when copy/paste is intermittent?  It works one second, stops working for 5-30 seconds, and then on its own starts working again.  This is what’s occurring in our new non-production environment.  The DBA team is setting up 16 new physical servers and 5 new virtual machines.  I haven’t found a server where this ISN’T happening.  This intermittent copy/paste issue is driving me crazy!

    Read the article

  • LibreOffice english spelling dictionary missing

    - by rossouwap
    I've got two machines, same OS (Ubuntu 11.10 x86_64), same LibreOffice ppa's (ppa:libreoffice/ppa). One has the "English spelling dictionaries, hyphenation rules, thesaurus..." extension in the extension manager, the other doesn't. Each upgraded using the ppa from 3.5.0 to 3.5.1. Can anyone provide some insight as to how to get this extension onto the second machine? I can remove LibreOffice from the second machine and install the packages from the LibreOffice site, but would prefer to keep the ppa - as I don't then need to remember to upgrade.

    Read the article

  • Dynamic MMap ran out of room when trying to sudo apt-get anything

    - by user1610406
    I was having an error in Update Manager that asks me to do a partial upgrade and it fails. Now I can't sudo apt-get install anything. I tried to fix it, and now I can't sudo apt-get anything. Every time, I get this output: Reading package lists... Error! E: Dynamic MMap ran out of room. Please increase the size of APT::Cache-Limit. Current value: 25165824. (man 5 apt.conf) E: Error occurred while processing libuptimed0 (NewVersion1) E: Problem with MergeList /var/lib/apt/lists/archive.ubuntu.com_ubuntu_dists_lucid_universe_binary-i386_Packages W: Unable to munmap E: The package lists or status file could not be parsed or opened. I have no idea why this is happening or how to fix it, and I fear that if I try something that probably doesn't work that it will make my problem worse. (Just for reference I am currently running 10.04 (Lucid) on my machine.)

    Read the article

  • Switching to Kubuntu results in low graphics mode

    - by HackToHell
    I looked at some screen shots of Kubuntu and I liked it so I went to Synaptic and installed the kubuntu-desktop package and set my desktop window manager to kde and rebooted. After reboot, I saw Kubuntu splash screen then this message; running in Low Graphical Mode. Then I was not able to dismiss the message because my mouse did not work Seemingly How to Geek had the same problem http://www.howtogeek.com/howto/ubuntu/install-kde-kubuntu-on-ubuntu/ . You will probably see that your xorg.conf file was backed up to xorg.conf.1 during the ?KDE / Kubuntu installation. Just copy the xorg.conf.1 back to xorg.conf, reboot, and everything should be fine. I also tried to do that by booting into recovery mode and then droping onto the shell. But it would not let me rename, came up with some error.

    Read the article

  • GLOBALFOUNDRIES Accelerates Innovation while Protecting IP with AutoVue for Agile

    - by Celine Beck
    GLOBALFOUNDRIES is a full-service semiconductor foundry with a global footprint. Launched in March 2009, the company quickly grew to be the second-largest foundry in the world, providing a unique combination of advanced technology and manufacturing to more than 160 customers. With operations in Singapore, Germany, and the United States, GLOBALFOUNDRIES is the only foundry that offers the flexibility of having secure manufacturing centers that span three continents.We sat down with Kishan Shah, Manager of PLM Practice at GLOBALFOUNDRIES so that he can explain how Oracle AutoVue integrated with Oracle Agile PLM supports the company’s mission of “turning sand into gold” ; enabling collaborative design-for-manufacturing and fostering innovation, all while protecting critical intellectual property.You can watch the video interview by clicking here. A customer success story is also available on Oracle’s website. 

    Read the article

  • Querying Literals in Entity SQL

    Entity SQL might surprise you if you are building query expressions with some non-string types. Ive blogged about this before with the DateTime literal after trying to use a string to represent the date in my query as Im used to with TSQL. Here is a snip from that post: SELECT VALUE BAModel.Contact(c.ContactID,c.FirstName,c.LastName,c.Title,c.AddDate,c.ModifiedDate) FROM dbo.Contact as c WHERE c.AddDate>="1/1/2007" I was trying to emulate T-SQL here but I need...Did you know that DotNetSlackers also publishes .net articles written by top known .net Authors? We already have over 80 articles in several categories including Silverlight. Take a look: here.

    Read the article

  • Wireless not working with an Atheros AR9285

    - by Neeraj
    I recently installed Ubuntu 12.04 and found my wireless card is not detected by OS. I tired to detect it by network manager but still it is not get output of the required command: toor@Linux:~$ sudo lshw -class network *-network description: Ethernet interface product: AR8131 Gigabit Ethernet vendor: Atheros Communications Inc. physical id: 0 bus info: pci@0000:03:00.0 logical name: eth0 version: c0 serial: f0:de:f1:9e:22:4d size: 100Mbit/s capacity: 1Gbit/s width: 64 bits clock: 33MHz capabilities: pm msi pciexpress vpd bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation configuration: autonegotiation=on broadcast=yes driver=atl1c driverversion=1.0.1.0-NAPI duplex=full firmware=N/A ip=124.123.227.84 latency=0 link=yes multicast=yes port=twisted pair speed=100Mbit/s resources: irq:44 memory:f2400000-f243ffff ioport:2000(size=128) *-network UNCLAIMED description: Network controller product: AR9285 Wireless Network Adapter (PCI-Express) vendor: Atheros Communications Inc. physical id: 0 bus info: pci@0000:04:00.0 version: 01 width: 64 bits clock: 33MHz capabilities: pm msi pciexpress bus_master cap_list configuration: latency=0 resources: memory:f2500000-f250ffff and toor@Linux:~$ rfkill list all 0: ideapad_wlan: Wireless LAN Soft blocked: yes Hard blocked: no 1: ideapad_bluetooth: Bluetooth Soft blocked: yes Hard blocked: no Please let me know what more info is required to resolve it.

    Read the article

  • Oracle University Nuevos cursos (Week 42)

    - by rituchhibber
    Oracle University ha publicado recientemenete las siguentes formaciones (o versiones) nuevos: Database Oracle Enterprise Manager Cloud Control 12c: Install & Upgrade (Training On Demand) MySQL Performance Tuning (Training On Demand) Fusion Middleware Oracle GoldenGate 11g Fundamentals for Oracle (4 days) Oracle WebCenter Content 11g: Site Studio Essentials (5 days) Oracle WebCenter Portal 11g: Build Portals with Spaces (3 days) Business Intelligence Oracle BI 11g R1: Create Analyses and Dashboards (4 days) SOA & BPM SOA Adoption and Architecture Fundamentals (3 Days) eBusiness Suite R12 Oracle Using and Maintaining Approvals Management - Self-Study Course R12 Oracle HRMS Advanced Benefits Fundamentals - Self-Study Course WebLogic Oracle WebLogic Server 11g: Monitor and Tune Performance (Training On Demand) Financial Oracle Project Financial Planning 11.1.2: Create Projects ( 3 days) Tuxedo Oracle Tuxedo 12c: Application Administration (5 days) Java Java SE 7: The Platform Evolves - Self-Study Course Primevera Primavera Client/Server Partner Trainer Course - Self-Study Course Primavera Progress Reporter 8.2 - Self-Study Course Póngase en contacto con el equipo local de Oracle University para conocer las fechas y otros detalles de los cursos.

    Read the article

  • IDirect3DDevice9Ex and D3DPOOL_MANAGED?

    - by bluescrn
    So I wanted to switch to IDirect3DDevice9Ex, purely for the SetFrameLatency function, as fullscreen vsynced D3D seemed to produce noticable input lag. But then it tells me 'ha ha ha! now you can't use D3DPOOL_MANAGED!': Direct3D9: (ERROR) :D3DPOOL_MANAGED is not valid with IDirect3DDevice9Ex Is this really as unpleasant as it looks (when you're relying quite heavily on managed resources) - or is there a simple solution? If it really does mean manual management of everything (reloading all static textures, VBs, and IBs on a device reset), is it worth the hassle, will IDirect3DDevice9Ex bring enough benefit to make it worth writing a new resource manager? Starting to think I must be doing something wrong, due to this: Direct3D9: (ERROR) :Lock is not supported for textures allocated with POOL_DEFAULT unless they are marked D3DUSAGE_DYNAMIC. So if I put my (static) textures in POOL_DEFAULT, they need flagging as D3DUSAGE_DYNAMIC, just because I lock them once to load the data in?

    Read the article

  • Nautilus tags/labels/marks/emblems for directories

    - by madox2
    Is there any way how to mark folders or files with tags(or labels or whatever) in Nautilus? It would be nice to sort marked folders or files through this tags. I am familiar with emblems but I cant sort through it and its complicated to assign emblem to folder(3 clicks at least). Especially my first idea was to mark folders in my Movie directory with tags seen, not seen, must see, and so on. Then I realized it would be useful in any other workspace with any custom tags... Is there any nautilus extension for this? Or any other file manager which can do this?

    Read the article

  • Periodic clicking sound from PC speaker

    - by John J. Camilleri
    After an update some months ago, my laptop has begun making a low, repeated clicking sound every few seconds. It is not being generated through the regular sound system, as altering the volume and even muting the sound does not make any difference. My regular audio works fine, by the way, so I am guessing this is some sort of PC speaker, since I cannot hear the click when I listen through regular headphones. Strangely, when I open the sound settings dialog the click magically disappears. I don't need to change any settings; if I simply leave the dialog open in the background then the problem disappears. Any ideas what this could be? I am running regular Ubuntu 12.04, and this is the output from lspci -v | grep -A7 -i "audio": 00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02) Subsystem: Acer Incorporated [ALI] Device 0349 Flags: bus master, fast devsel, latency 0, IRQ 44 Memory at 54200000 (64-bit, non-prefetchable) [size=16K] Capabilities: <access denied> Kernel driver in use: snd_hda_intel Kernel modules: snd-hda-intel

    Read the article

  • Blogging locally and globally–my experience

    - by DigiMortal
    In Baltic MVP Summit 2011 there was discussion about having two blogs - one for local and another for global audience – and how to publish once written information in these blogs. There are many ways how to optimize your blogging activities if you have more than one audience and here you can find my experiences, best practices and advices about this topic. My two blogs I have to working blogs: this one here technology and programming blog for local market My local blog is almost five years old and it makes it one of the oldest company blogs in Estonia. It is still active and I write there as much as I have time for it. This blog here is active since September 2007, so it is about 3.5 years old right now. Both of these blogs are  my major hits in my MVP carrier and they have very good web statistics too. My local blog My local blog is about programming, web and technology. It has way wider target audience then this blog here has. By example, in my local blog I blog also about local events, cool new concept phones, different webs providing some interesting services etc. But local guys can find there also my postings about how to solve one or another programming problem and postings about Microsoft technologies I am playing with. This far my local blog has a lot of readers for such a small country that Estonia is. This blog has made me a lot of cool contacts and I have had there a lot of interesting discussions about different technical topics. Why I started this blog? Living in small country is different than living in big country. In small country you have less people and therefore smaller audience so you have to target more than one technical topic to find enough readers. In a same time you are still interested in your main topics and you want to reach to more people who are sharing same interests with you. Practically one day y will grow out from local market and you go global. This is how this blog was born. Was it worth to create, promote and mess with it? Every second I have put on my time to this blog has been worth of it. Thanks to this blog I have found new good friends and without them I think it is more boring to work on different problems and solutions. Defining target audiences One thing you should always do when having more than one blog is defining target audiences. If you are just technomaniac interested in sharing your stuff and make some new friends and have something to write to your MVP nomination form then you don’t have to go through complex targeting process. You can do it simple way and same effectively. Here is how I defined target audiences to my blogs: local blog – reader of my local blog is IT professional, software developer, technology innovator or just some guy who is interested in technology,   this blog – reader of this blog is experienced professional software developer who works on Microsoft technologies or software developer who is open minded and open to new technologies and interesting solutions to development problems. You can see how local blog – due to small market with less people – has wider definition for audience while this blog is heavily targeted to Microsoft technologies and specially to software development. On practical side these decisions are also made well I think because it is very hard to build up popular common IT blog. On global level it is better to target some specific niche and find readers who are professionals on your favorite topics. Thanks to this blog I have found new friends who are professional developers and I am very happy about all the discussions I have had with them. Publishing content to different blogs My local blog and this blog have some overlapping topics like .NET, databases and SEO. Due to this overlapping there is question: when I write posting to my local blog then should I have to publish same thing in my global blog? And if I write something to my global blog then should I publish same thing also in my local blog? Well, it really depends on the definition of your target audiences. If they match then of course it is good idea to translate you post and publish it also to another blog. But if you have different audiences then you may need to modify your posting before publishing it. The questions you have to answer are: is target audience interested in this topic? is target audience expecting more specific and deeper handling of this topic or are they expecting more general handling of topic? is the problem you are discussing actual for target audience or not? You have to answer these questions and after that make your decision. If you need to modify your original posting then take some time and do it. Provide quality to all your readers because they will respect you if you respect them. Cross-posting and referencing It is tempting to save time that preparing some blog post takes and if you have are done with posting in one blog it may seem like good idea to make short posting to another blog and add reference to first one where topic is discussed longer. Well, don’t do it – all your readers expect good quality content from you and jumping from one blog post to another is disturbing for them. Of course, there is problem with differences between target audiences. You may have wider target audience and some people may be interested in more specific handling of topic. In this case feel free to refer your blog you are writing in english. This is not working very well in opposite direction because almost all my global blog readers understand english but not estonian. By example, estonian language is complex one and online translating tools make very poor translations from estonian language. This is why I don’t even plan to publish postings here that refer to my local blog for more information. I am keeping these two blogs as two different worlds and if there is posting that fits well to both blogs I will write my posting to one blog and then answer previous three questions before posting same thing to another blog. Conclusion Growing out of your local market is not anything mysterious if you are living in small country. As it is harder to find people there who are interested in same topics with you then sooner or later you will start finding these new contacts from global audience. Global audience is bigger and to be visible there you must provide high quality content to your audience. It is something you will learn over time and you will learn every day something new when you are posting to your global blog. You may ask: if global blog is much more complex thing to do then is it worth to do at all? My answer is: yes, do it for sure. It is not easy thing to do when you start but if you work on your global blog and improve it over time you will get over all obstacles pretty soon. Just don’t forget one thing – content is king and your readers expect high quality from you.

    Read the article

  • How to Inspect Javascript Object

    - by Madhan ayyasamy
    You can inspect any JavaScript objects and list them as indented, ordered by levels.It shows you type and property name. If an object property can't be accessed, an error message will be shown.Here the snippets for inspect javascript object.function inspect(obj, maxLevels, level){  var str = '', type, msg;    // Start Input Validations    // Don't touch, we start iterating at level zero    if(level == null)  level = 0;    // At least you want to show the first level    if(maxLevels == null) maxLevels = 1;    if(maxLevels < 1)             return '<font color="red">Error: Levels number must be > 0</font>';    // We start with a non null object    if(obj == null)    return '<font color="red">Error: Object <b>NULL</b></font>';    // End Input Validations    // Each Iteration must be indented    str += '<ul>';    // Start iterations for all objects in obj    for(property in obj)    {      try      {          // Show "property" and "type property"          type =  typeof(obj[property]);          str += '<li>(' + type + ') ' + property +                  ( (obj[property]==null)?(': <b>null</b>'):('')) + '</li>';          // We keep iterating if this property is an Object, non null          // and we are inside the required number of levels          if((type == 'object') && (obj[property] != null) && (level+1 < maxLevels))          str += inspect(obj[property], maxLevels, level+1);      }      catch(err)      {        // Is there some properties in obj we can't access? Print it red.        if(typeof(err) == 'string') msg = err;        else if(err.message)        msg = err.message;        else if(err.description)    msg = err.description;        else                        msg = 'Unknown';        str += '<li><font color="red">(Error) ' + property + ': ' + msg +'</font></li>';      }    }      // Close indent      str += '</ul>';    return str;}Method Call:function inspect(obj [, maxLevels [, level]]) Input Vars * obj: Object to inspect * maxLevels: Optional. Number of levels you will inspect inside the object. Default MaxLevels=1 * level: RESERVED for internal use of the functionReturn ValueHTML formatted string containing all values of inspected object obj.

    Read the article

  • Embedded Spark 2010 Summer Challenge

    - by Valter Minute
    If you have a good idea for a cool embedded device based on Windows Embedded 7 and some free time to work on it you can partecipate to the Embedded Spark 2010 Summer Challenge. Just submit a short paper describing your idea and, if your idea is one of the 75 selected by the judges, you’ll receive some hardware to put your idea in practice and a chance to attend ESC Boston for free and win 15.000 dollars. The latest challenge has been won by Marco Bodoira, a fellow Italian embedded developer, so I hope to see many Italian developers (and non developers) presenting their ideas and project for this new challenge! You can find rules, ideas, forums and all the information you need at the challenge web site: http://www.embeddedspark.com/

    Read the article

  • Lack of Transparency in the Supply Chain Results in Inconsistent Reporting on Conflict Minerals

    - by Terri Hiskey
    May 31, 2014 was the official deadline for U.S.-listed companies to disclose use of conflict minerals to the SEC. Of the estimated 6,000 companies that were required to file audits of their tin, gold, tungsten or tantalum in their products, only 1,300 filed reports, and these results have revealed the ongoing challenges that many manufacturers are having complying with this legislation. An article authored by IDC analyst Heather Ashton,"Conflict Minerals Reporting Passes a Notable Milestone" notes that many leading companies such as Intel, Apple and HP filed their reports ahead of the deadline, but other companies are struggling with trying to trace their supply chain back to raw materials, especially as many non-U.S. based suppliers have no legal requirement to comply with the law since they are not U.S.-listed companies. This has resulted in widely varying levels of reporting from company to company. Check out the full article here. Are your customers experiencing the same pains?

    Read the article

  • An overview of Windows Azure

    - by Sahil Malik
    SharePoint 2010 Training: more information I will be speaking on Windows Azure – an overview at one of my favorite user groups, CMAPonline on October 25th. Here are the details, When – October 25th 2011, 630PMWhere - 6021 Univeristy Blvd,  Suite 250, Ellicott City, MD 21043 About - "SharePoint Office365 and Azure – an Overview of what you can use today!"Everyone is talking about the cloud. Everyone is moving to the cloud. Microsoft's cloud offering is probably the most expansive of all. But how does it really compare with other offerings? What is the featureset of Google? Or Amazon? And in the jungle of Beta, what is currently proven and production ready in the Microsoft spectrum? Most of all, how do you move from your current setup to a cloud based setup? In this session, Sahil provides a manager and architect level overview demystifying all these topics and more. Read full article ....

    Read the article

  • Mixing Forms and Token Authentication in a single ASP.NET Application (the Details)

    - by Your DisplayName here!
    The scenario described in my last post works because of the design around HTTP modules in ASP.NET. Authentication related modules (like Forms authentication and WIF WS-Fed/Sessions) typically subscribe to three events in the pipeline – AuthenticateRequest/PostAuthenticateRequest for pre-processing and EndRequest for post-processing (like making redirects to a login page). In the pre-processing stage it is the modules’ job to determine the identity of the client based on incoming HTTP details (like a header, cookie, form post) and set HttpContext.User and Thread.CurrentPrincipal. The actual page (in the ExecuteHandler event) “sees” the identity that the last module has set. So in our case there are three modules in effect: FormsAuthenticationModule (AuthenticateRequest, EndRequest) WSFederationAuthenticationModule (AuthenticateRequest, PostAuthenticateRequest, EndRequest) SessionAuthenticationModule (AuthenticateRequest, PostAuthenticateRequest) So let’s have a look at the different scenario we have when mixing Forms auth and WS-Federation. Anoymous request to unprotected resource This is the easiest case. Since there is no WIF session cookie or a FormsAuth cookie, these modules do nothing. The WSFed module creates an anonymous ClaimsPrincipal and calls the registered ClaimsAuthenticationManager (if any) to transform it. The result (by default an anonymous ClaimsPrincipal) gets set. Anonymous request to FormsAuth protected resource This is the scenario where an anonymous user tries to access a FormsAuth protected resource for the first time. The principal is anonymous and before the page gets rendered, the Authorize attribute kicks in. The attribute determines that the user needs authentication and therefor sets a 401 status code and ends the request. Now execution jumps to the EndRequest event, where the FormsAuth module takes over. The module then converts the 401 to a redirect (302) to the forms login page. If authentication is successful, the login page sets the FormsAuth cookie.   FormsAuth authenticated request to a FormsAuth protected resource Now a FormsAuth cookie is present, which gets validated by the FormsAuth module. This cookie gets turned into a GenericPrincipal/FormsIdentity combination. The WS-Fed module turns the principal into a ClaimsPrincipal and calls the registered ClaimsAuthenticationManager. The outcome of that gets set on the context. Anonymous request to STS protected resource This time the anonymous user tries to access an STS protected resource (a controller decorated with the RequireTokenAuthentication attribute). The attribute determines that the user needs STS authentication by checking the authentication type on the current principal. If this is not Federation, the redirect to the STS will be made. After successful authentication at the STS, the STS posts the token back to the application (using WS-Federation syntax). Postback from STS authentication After the postback, the WS-Fed module finds the token response and validates the contained token. If successful, the token gets transformed by the ClaimsAuthenticationManager, and the outcome is a) stored in a session cookie, and b) set on the context. STS authenticated request to an STS protected resource This time the WIF Session authentication module kicks in because it can find the previously issued session cookie. The module re-hydrates the ClaimsPrincipal from the cookie and sets it.     FormsAuth and STS authenticated request to a protected resource This is kind of an odd case – e.g. the user first authenticated using Forms and after that using the STS. This time the FormsAuth module does its work, and then afterwards the session module stomps over the context with the session principal. In other words, the STS identity wins.   What about roles? A common way to set roles in ASP.NET is to use the role manager feature. There is a corresponding HTTP module for that (RoleManagerModule) that handles PostAuthenticateRequest. Does this collide with the above combinations? No it doesn’t! When the WS-Fed module turns existing principals into a ClaimsPrincipal (like it did with the FormsIdentity), it also checks for RolePrincipal (which is the principal type created by role manager), and turns the roles in role claims. Nice! But as you can see in the last scenario above, this might result in unnecessary work, so I would rather recommend consolidating all role work (and other claims transformations) into the ClaimsAuthenticationManager. In there you can check for the authentication type of the incoming principal and act accordingly. HTH

    Read the article

< Previous Page | 401 402 403 404 405 406 407 408 409 410 411 412  | Next Page >