2014-03-28 86 views
0

http://www.ibm.com/developerworks/websphere/techjournal/1305_odonnell1/1305_odonnell1.html 使用上述鏈接 我在WebSphere Application Server 8.5 ND上啓用了OAuth。 OAuth應用程序已啓動並正在運行。 我甚至可以從授權中獲得acess_token。 但是,當我使用Acess令牌來認證snoop Servlet時,彈出一個輸入用戶名和密碼的窗口。 嘗試了,重新安裝服務器上的應用程序。 應用程序說「默認領域」我錯過了什麼嗎? 請幫忙。Websphere Application Server 8.5中的OAuth ND

感謝, 納文小號

+0

幫助我們來幫助你。正如文章中建議的那樣,使用以下跟蹤字符串重新運行您的方案:com.ibm.ws.security.oauth20。* = all。在這裏發佈輸出,所以我們可以看看。 – pglezen

+0

如何爲該字符串啓用跟蹤。 – user3336724

回答

0

請在這裏找到蹤跡

[14年4月2日10:09:53:052 IST] 000000a3 BaseTokenHand> com.ibm.ws.security .oauth20.plugins.BaseTokenHandler createToken ENTRY [4/2/14 10:09:53:052 IST] 000000a3 BaseTokenHand < com.ibm.ws.security.oauth20.plugins.BaseTokenHandler createToken RETURN [4/2/14 10:09:53:052 IST] 000000a3 CacheEntry 3
OAuth20Token CacheEntry:{_ UNIQUEID: Vx2AMylEfS9xbb8vxL0EQApZrM9xV1FJidwuh0aA _componentId:DemoProvider _type:_subType的access_token:承載_createdAt:1396413593052 _lifetime:3600 _tokenString:Vx2AMylEfS9xbb8vxL0EQApZrM9xV1FJidwuh0aA _clientId:apwasadmin2014 _username:P00993163 _scopes:{} _redirectUri:空_stateId:dbd3fc99-7952-45f4-9db6 1396417193052 [14年4月2日10:09:53:053 IST] 000000a3 CacheEntry 3 OAuth20Token CacheEntry:{_ UNIQUEID: owfSM3kzlgWL92oxUkxfENaAr476fMvpyObmkWo99G1qDmxwPt _componentId: DemoProvider _type:authorization_grant _subType:refresh_token _createdAt:1396413593053 _lifetime -98c69dfb7376}將在到期:604800 _tokenString:owfSM3kzlgWL92oxUkxfENaAr476fMvpyObmkWo99G1qDmxwPt _clientId: apwasadmin2014 _username:P00993163 _scopes:{} _redirectUri:null _stateId:dbd3fc99-7952-45f4-9db6-98c69dfb7376}將於:1397018393053 [4/2/14 10:09:53:053 IST] 000000a3 ResourceOwner> mediateToken條目[4/2/14 10: 09:53:068 IST] 000000a3 ResourceOwner < mediateToken退出[4/2/14 10:09:53:069 IST] 000000a3 OAuth20Endpoi < processTokenRequest退出[4/2/14 10:09:53:069 IST] 000000a3 OAuth20Endpoi < doPost退出[4/2/14 10:09:53:070 IST] 000000a3 ClientAuthnFi < doFilter:客戶端已通過身份驗證。退出[4/2/14 10:09:53:070 IST] 000000a3 OAuth20Reques < doFilter退出[4/2/14 10:10:01:780 IST] 000004f3 WASSessionCor E SessionContext checkSecurity SESN0008E:用戶身份驗證爲anonymous has attempt to access a sessions owned by user:defaultWIMFileBasedRealm/uid = apwasadmin2014,o = defaultWIMFileBasedRealm。 [14年4月2日10:10:01:782 IST] 000004f3 SystemOutö
com.ibm.websphere.servlet.session.UnauthorizedSessionRequestException: SESN0008E:認證爲匿名的用戶試圖訪問由擁有的 會話 user:defaultWIMFileBasedRealm/uid = apwasadmin2014,o = defaultWIMFileBasedRealm。 [4/2/14 10:10:01:783 IST] 000004f3 SystemOut O at com.ibm.ws.session.SessionContext.checkSecurity(SessionContext.java:1358) [4/2/14 10:10: 01:783 IST] 000004f3 SystemOut O at com.ibm.ws.session.SessionContext.isValid(SessionContext。java:877) [4/2/14 10:10:01:783 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.srt.SRTRequestContext.getSession(SRTRequestContext.java:95) [4/2/14 10:10:01:784 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.srt.SRTServletRequest.getSession(SRTServletRequest.java:2149) [4/2/14 10:10:01:784 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.srt.SRTServletRequest.getSession(SRTServletRequest.java:2133) [4/2/14 10:10:01:785 IST] 000004f3 SystemOut O at org。 apache.jasper.runtime.PageContextImpl._initialize(PageContextImpl.java:219) [4/2/14 10:10:01:785 IST] 000004f3 SystemOut O at org.apache.jasper.runtime.PageContextImpl.initialize(PageContextImpl的.java: 190) [4/2/14 10:10:01:785 IST] 000004f3 SystemOut O at org.apache.jasper.runtime.JspFactoryImpl.internalGetPageContext(JspFactoryImpl.java:166) [4/2/14 10: 10:01:786 IST] 000004f3 SystemOut O at org.apache.jasper.runtime.JspFactoryImpl.getPageContext(JspFactoryImpl.java:132) [4/2/14 10:10:01:786 IST] 000004f3 SystemOut O at com.ibm._jsp._auth_5F_error._jspService(_auth_5F_error.java:77) [14年4月2日10:10:01:786 IST] 000004f3 SystemOutö在 com.ibm.ws.jsp.runtime.HttpJspBase。 (HttpServlet.java:668) [4/2/14 10:10:01:787 IST] 10:10:01:787 IST ] 000004f3 SystemOutö在 com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1225) [14年4月2日10:10:01:787 IST] 000004f3 SystemOutö在 com.ibm .ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:775) [4/2/14 10:10:01:788 IST] 000004f3 SystemOut O在 com.ibm.ws.webcontainer.servlet.ServletWrapper。 handleRequest(ServletWrapper.java:457) [4/2/14 10:10:01:788 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) [4/2/14 10:10:01:788 IST] 000004f3 SystemOut O at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) [4/2/14 10:10:01:789 IST] 000004f3 SystemOut O at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:216) [4/2/14 10: 10:01:789 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032) [4/2/14 10:10:01:789 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1384) [4/2/14 10:10:01:790 IST] 000004f3 SystemOut O在 com.ibm.ws. webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:193) [4/2/14 10:10:01:790 IST] 000004f3 SystemOut O在 com.ibm.ws.webcontainer.webap p.WebApp.sendError(WebApp.java:3263) [4/2/14 10:10:01:790 IST] 000004f3 SystemOut O at com.ibm.wsspi.webcontainer.collaborator.CollaboratorHelper.processSecurityPreInvokeException(CollaboratorHelper.java :203) [14年4月2日10:10:01:791 IST] 000004f3 SystemOutö在 com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1090) [4/2/14 10:10:01:791 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) [4/2/14 10:10:01:792 IST ] 000004f3系統輸出O在 com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer。java:908) [4/2/14 10:10:01:792 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) [4/2/14 10:10:01:792 IST] 000004f3 SystemOut O at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) [4/2/14 10:10:01:792 IST] 000004f3 SystemOut O at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) [4/2/14 10:10:01:793 IST] 000004f3 SystemOut O at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) [4/2/14 10:10:01:793 IST] 000004f3 SystemOut O at com.ibm.ws .http.channel.inbound.impl.HttpInboundLink.proces sRequest(HttpInboundLink.java:312) [4/2/14 10:10:01:793 IST] 000004f3 SystemOut O at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java :283) [4/2/14 10:10:01:794 IST] 000004f3 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.determineNextChannel(SSLConnectionLink.java:1048) [4/2/14 10:10:01:794 IST] 000004f3 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInboundPostHandshake(SSLConnectionLink.java:716) [4/2/14 10:10: 01:794 IST] 000004f3 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLConnectionLink $ MyHandshakeCompletedCallback.complete(SSLConnectionLink.java:412) [4/2/14 10:10:01:795 IST] 000004f3 SystemOut O,地址爲 com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(SSLUtils.java:1066) [4/2/14 10:10:01:795 IST] 000004f3 SystemOut O在 com.ibm.ws. ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:87) [14年4月2日10:10:01:795 IST] 000004f3 SystemOutö在 com.ibm.ws.tcp.channel.impl.AioReadCompletionListener .futureCompleted(AioReadCompletionListener.java:165) [4/2/14 10:10:01:796 IST] 000004f3 SystemOut O at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [ 4/2/14 10:10:01:796 IST] 000004f3 SystemOut O at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [4/2/14 10:10:01: 796 IST] 000004f3系統輸出O在 com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)[4/2/14 10:10:01:797 IST] 000004f3 SystemOut O在 com.ibm.io.async.ResultHandler。完成(ResultHandler.java:204) [4/2/14 10:10:01:797 IST] 000004f3 SystemOut O at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [4/2/14 10:10:01:797 IST] 000004f3 SystemOut O at com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)[4/2/14 10:10:01: 798 IST] 000004f3 SystemOut O at com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1815)[4/2/14 10:11:11:271 IST] 0000007b CacheEntry 3令牌:{ _uniqueId: dxqkEw2EbF9kGzD41WwuGUaHftUq6ROJRGf6sndP _componentId :DemoProvider _type:_subType的access_token:承載_createdAt:1396012673233 _lifetime:3600 _tokenString:dxqkEw2EbF9kGzD41WwuGUaHftUq6ROJRGf6sndP _clientId:apwasadmin2014 _username:P00993163 _scopes:{} _redirectUri:空_stateId:c7f97582-066c-4d96-91d2-a19cafaba38d}過期[根@ apwasdev server1的] #clear [root @ apwasdev server1]#tail trace.log [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake( SSLUtils.java:1066) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:87) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener。java:165) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [4/2/14 10:12:25:554 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)[4/2/14 10:12:25:555 IST] 000000a2 SystemOut O at com.ibm.io.async。 ResultHandler.complete(ResultHandler.java:204) [4/2/14 10:12:25:556 IST] 000000a2 SystemOut O at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [4/2/1 4 10:12:25:556 IST] 000000a2 SystemOutö在 com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)[14年4月2日 10:12:25:556 IST] 000000a2 SystemOut O不連到 com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1815) [根@ apwasdev server1的]#尾trace.log的[14年4月2日10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(SSLUtils.java:1066) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:87) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws. tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java :165) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [4/2/14 10 :12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [4/2/14 10:12:25:554 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)[4/2/14 10:12:25:555 IST] 000000a2 SystemOut O at com.ibm.io.async.ResultHandler .complete(ResultHandler.java:204) [4/2/14 10:12:25:556 IST] 000000a2 SystemOut O at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775) [ 4/2/14 10 :12:25:556 IST] 000000a2 SystemOutö在 com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)[14年4月2日 10:12:25:556 IST] 000000a2 SystemOut ø在 com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1815) [根@ apwasdev server1的]#尾trace.log的[14年4月2日10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(SSLUtils.java:1066) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com .ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:87) [4/2/14 10:12:25:553 IST] 000000a2系統輸出O在 com.ibm.ws.tcp。 channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165 ) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [4/2/14 10:12 :25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [4/2/14 10:12:25:554 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)[14年4月2日 10:12:25:555 IST] 000000a2 SystemOutö在 com.ibm.io.async.ResultHandler.complete (ResultHandler.java:204) [14年4月2日10:12:25:556 IST] 000000a2 SystemOutö在 com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler。java:775) [4/2/14 10:12:25:556 IST] 000000a2 SystemOut O at com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)[4/2/14 10:12:25:556 IST] 000000a2 SystemOut O at com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1815) [root @ apwasdev server1]#tail -34 trace.log [ 4/2/14 10:12:25:540 IST] 000000a2 SystemOut O at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)[4/2/14 10:12:25:540 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1225) [4/2/14 10:12:25:540 IST] 000000a2 SystemOut O at com。 ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWra poo.java:775) [4/2/14 10:12:25:540 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:457) [4/2/14 10:12:25:541 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178) [4/2/14 10:12:25 :541 IST] 000000a2 SystemOut O at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:122) [4/2/14 10:12:25:541 IST] 000000a2 SystemOut O at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:216) [4/2/14 10:12:25:541 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1032) [4/2/14 10:12:25:549 IST] 000000a2 SystemOut O在 com.ibm.ws.webcontainer。 webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1384) [4/2/14 10:12:25:549 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java :193) [4/2/14 10:12:25:549 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.webapp.WebApp.sendError(WebApp.java:3263) [4/2/14 10:12:25:549 IST] 000000a2 SystemOutö在 com.ibm.wsspi.webcontainer.collaborator.CollaboratorHelper.processSecurityPreInvokeException(CollaboratorHelper.java:203) [14年4月2日10:12:25:549 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1090) [4/2/14 10:12:25:549 IST] 000000a2 SystemOut O at com。 ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87) [4/2/14 10:12:25:550 IST] 000000a2 SystemOut O在 com.ibm.ws.webcontainer.WebContainer.handleRequest (WebContainer.java:908) [4/2/14 10:12:25:550 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662) [4/2/14 10:12:25:550 IST] 000000a2 SystemOut O at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195) [4/2/14 10:12:25: 550 IST] 000000a2 SystemOut O at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:459) [4/2/14 10:12:25:550 IST] 000000a2 SystemOut O在 com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:526) [4/2/14 10:12:25:550 IST] 000000a2 SystemOut O at com.ibm .ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:312) [4/2/14 10:12:25:551 IST] 000000a2 SystemOut O at com.ibm.ws.http。 channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:283) [4/2/14 10:12:25:551 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLConnectionLink .determineNextChannel(SSLConnectionLink。java:1048) [4/2/14 10:12:25:552 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLConnectionLink.readyInboundPostHandshake(SSLConnectionLink.java:716) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLConnectionLink $ MyHandshakeCompletedCallback.complete(SSLConnectionLink.java:412) [4/2/14 10 :12:25:553 IST] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLUtils.handleHandshake(SSLUtils.java:1066) [4/2/14 10:12:25:553 IST ] 000000a2 SystemOut O at com.ibm.ws.ssl.channel.impl.SSLHandshakeIOCallback.complete(SSLHandshakeIOCallback.java:87) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com .ibm.ws.tcp.channel.impl.AioR eadCompletionListener.futureCompleted(AioReadCompletionListener.java:165) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217) [4/2/14 10:12:25:553 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161) [4/2/14 10:12:25 :554 IST] 000000a2 SystemOut O at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)[4/2/14 10:12:25:555 IST] 000000a2 SystemOut O at com。 ibm.io.async.ResultHandler.complete(ResultHandler.java:204) [4/2/14 10:12:25:556 IST] 000000a2 SystemOut O at com.ibm.io.async.ResultHandler.runEventProcessingLoo p(ResultHandler.java:775) [4/2/14 10:12:25:556 IST] 000000a2 SystemOut O at com.ibm.io.async.ResultHandler $ 2.run(ResultHandler.java:905)[4/2/14 10:12:25:556 IST] 000000a2 SystemOutö在 com.ibm.ws.util.ThreadPool $ Worker.run(ThreadPool.java:1815)

+0

此跟蹤不準確嗎?任何人都可以幫助我一樣嗎? – user3336724

相關問題